【发布时间】:2020-01-13 17:59:54
【问题描述】:
我正在尝试找出 pythonic 在列表中解压缩迭代器的方法。
例如:
my_iterator = zip([1, 2, 3, 4], [1, 2, 3, 4])
我提供了以下方法来将我的迭代器解压到一个列表中:
1)
my_list = [*my_iterator]
2)
my_list = [e for e in my_iterator]
3)
my_list = list(my_iterator)
No 1) 是我最喜欢的方式,因为它的代码更少,但我想知道这是否也是 pythonic 方式。或者除了pythonic方式之外,还有另一种方法可以实现吗?
【问题讨论】:
-
选项 3 是
2to3使用的选项(参见例如echo "zip([1],[2])" | 2to3 -),因此会投赞成票。 -
@OlvinRoght 在我过去对 Python 3 的所有测试中,
[*it]总是最快的。它比list(it)稍快,因为后者在查找list函数时开销很小。但是差异很小,只有在输出列表的大小很小时才会显示出来。
标签: python python-3.x list unpack iterable-unpacking