반응형
목록 이해력을 사용하여 튜플 작성
목록 이해력을 사용하여 목록에서 2- 튜플의 튜플을 만드는 방법은 무엇입니까? 다음과 같습니다.
tup = ()
for element in alist:
tup = tup + ((element.foo, element.bar),)
tup = tuple((element.foo, element.bar) for element in alist)
기술적으로는 생성기 표현식 입니다. 목록 이해력과 비슷하지만 느리게 평가되며 중간 목록에 메모리를 할당 할 필요가 없습니다.
완전성을 위해 목록 이해력은 다음과 같습니다.
tup = tuple([(element.foo, element.bar) for element in alist])
추신 : attrgetter
빠르지 않습니다 ( alist
여기에 백만 개의 항목이 있습니다) :
In [37]: %timeit tuple([(element.foo, element.bar) for element in alist])
1 loops, best of 3: 165 ms per loop
In [38]: %timeit tuple((element.foo, element.bar) for element in alist)
10 loops, best of 3: 155 ms per loop
In [39]: %timeit tuple(map(operator.attrgetter('foo','bar'), alist))
1 loops, best of 3: 283 ms per loop
In [40]: getter = operator.attrgetter('foo','bar')
In [41]: %timeit tuple(map(getter, alist))
1 loops, best of 3: 284 ms per loop
In [46]: %timeit tuple(imap(getter, alist))
1 loops, best of 3: 264 ms per loop
참고 URL : https://stackoverflow.com/questions/15410119/use-list-comprehension-to-build-a-tuple
반응형
'Development Tip' 카테고리의 다른 글
__setstate__ 및 __getstate__ 사용의 간단한 예 (0) | 2020.12.01 |
---|---|
Android의 Parcelable 및 상속 (0) | 2020.12.01 |
Kubernetes (kubectl)에 사용자를 추가하는 방법은 무엇입니까? (0) | 2020.12.01 |
pycharm에서 Conda 환경 사용 (0) | 2020.12.01 |
Spring-동일한 애플리케이션에서 여러 트랜잭션 관리자를 사용할 수 있습니까? (0) | 2020.12.01 |