我正在尝试找出在列表中解压缩迭代器的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方法。或者,也许除了Python 3之外,还有另一种方法可以实现这一目标?
在探索了更多主题之后,我得出了一些结论。
应该有一种-最好只有一种-显而易见的方法
(禅宗的python)
确定哪个选项是“ pythonic”选项时,应考虑一些标准:
在所有条件下赢得的明显“ pythonic”选项是选项3):
列表=列表(my_iterator)
这就是为什么“很明显”没有3)是pythonic的原因:
选项1)(使用*解压缩)如果您不经常使用星号运算符,可能会有些混乱,在Python中有4种情况使用星号:
另一个很好的理由是Python文档本身,我也做了一些统计数据来检查哪些选项是由文档选择,为了这个,我我- 我选择了4 BUIL,从模块的迭代器和一切itertools(即使用这样的:itertools.)怎么看它们被包装在一个列表中:
itertools.
浏览了文档之后,我发现:使用选项1)和2)在列表中解压缩了0个迭代器,使用选项3)解开了35个迭代器。
结论 :
在列表中解压缩迭代器的pythonic方法是: my_list = list(my_iterator)