본문 바로가기
파이썬

파이썬 목록에있는 연속 요소의 차이점

by º기록 2020. 10. 7.
반응형

가능한 중복 :


목록이 있고 연속 요소 간의 차이점을 찾고 싶습니다.

a = [0, 4, 10, 100]
find_diff(a)
>>> [4,6,90]

find_diff () 함수를 어떻게 코딩 하시겠습니까? "for"반복자를 사용하여 코드를 작성할 수 있지만 간단한 한 줄로이를 수행하는 매우 간단한 방법이 있다고 확신합니다.

 

해결 방법

 


>>> a = [0, 4, 10, 100]

# basic enumerate without condition:
>>> [x - a[i - 1] for i, x in enumerate(a)][1:]
[4, 6, 90]

# enumerate with conditional inside the list comprehension:
>>> [x - a[i - 1] for i, x in enumerate(a) if i > 0]
[4, 6, 90]

# the zip version seems more concise and elegant:
>>> [t - s for s, t in zip(a, a[1:])]
[4, 6, 90]

성능면에서 너무 많은 차이가없는 것 같습니다.

In [5]: %timeit [x - a[i - 1] for i, x in enumerate(a)][1:]
1000000 loops, best of 3: 1.34 µs per loop

In [6]: %timeit [x - a[i - 1] for i, x in enumerate(a) if i > 0]
1000000 loops, best of 3: 1.11 µs per loop

In [7]: %timeit [t - s for s, t in zip(a, a[1:])]
1000000 loops, best of 3: 1.1 µs per loop

 

참조 페이지 https://stackoverflow.com/questions/5314241

 

 

반응형

댓글