반응형
가능한 중복 :
목록이 있고 연속 요소 간의 차이점을 찾고 싶습니다.
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 TypeError : 'float32'유형의 개체가 JSON 직렬화 가능하지 않습니다. (0) | 2020.10.08 |
---|---|
파이썬 디코딩 된 JSON 객체에서 "u"를 어떻게 제거합니까? (0) | 2020.10.08 |
파이썬 Dict 목록에서 공통 Dict 필드의 min () 값을 찾습니다. (0) | 2020.10.07 |
파이썬 Fabric에서 SSH 키 파일 사용 (0) | 2020.10.07 |
파이썬 Histogram Matplotlib (0) | 2020.10.07 |
댓글