Development Tip

목록 이해력을 사용하여 튜플 작성

yourdevel 2020. 12. 1. 19:52
반응형

목록 이해력을 사용하여 튜플 작성


목록 이해력을 사용하여 목록에서 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

반응형