如何以最pythonic的方式迭代多个列表?
说我有2个列表:
l1 = [1, 2, 3]
l2 = [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
如何在不改变l1和l2的情况下实现l1和l2中整个元素集的迭代?
我可以简单地加入两个列表然后迭代结果:
l3 = l1[:]
l3.extend(l2)
for e in l3:
# ... whatever with e
Run Code Online (Sandbox Code Playgroud)
但是这个解决方案听起来并不像pythonic,也没有效率,所以我正在寻找更好的方法.
你可以使用itertools.chain():
import itertools
for e in itertools.chain(l1, l2):
print e
Run Code Online (Sandbox Code Playgroud)
与此不同,这不需要为迭代创建临时列表l1 + l2.它也适用于任意迭代和不同类型的序列.例如:
>>> l1 = (1, 2, 3)
>>> l2 = [4, 5, 6]
>>> l1 + l2 # can't loop over l1 + l2...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "list") to tuple
>>> import itertools
>>> for e in itertools.chain(l1, l2):
... print e
...
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |