使用列表理解构建tup

2024-04-19 12:07:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用列表理解从列表中构建一个2元组的元组。相当于

tup = ()
for element in alist:
    tup = tup + ((element.foo, element.bar),)

Tags: in列表forfoobarelement元组tup
1条回答
网友
1楼 · 发布于 2024-04-19 12:07:56
tup = tuple((element.foo, element.bar) for element in alist)

从技术上讲,它是一个generator expression。这就像一个列表理解,但它的评估很慢,不需要为中间列表分配内存。

为了完整起见,列表理解如下:

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

相关问题 更多 >