【发布时间】:2013-08-07 19:42:04
【问题描述】:
如何以最 Python 的方式迭代多个列表?
假设我有 2 个列表:
l1 = [1, 2, 3]
l2 = [4, 5, 6]
如何在不改变 l1 和 l2 的情况下实现对 l1 和 l2 中的整个元素集的迭代?
我可以简单地加入两个列表,然后遍历结果:
l3 = l1[:]
l3.extend(l2)
for e in l3:
# ... whatever with e
但这个解决方案在我看来并不像 Python 一样,效率也不高,所以我正在寻找更好的方法。
【问题讨论】:
-
你总是可以在单独的循环中迭代
l1,然后迭代l2。如果循环中有太多代码不值得重复,只需将其抽象为一个函数即可。然而,话虽如此,chain几乎总是最好的答案,正如 F.J 所建议的那样。例如,如果你想使用一个geneexpr 或listcomp 或函数而不是一个显式循环,你不能把它分成两个genexpr。 (好吧,您可以...但只能通过在结果上调用chain,所以您不妨一开始就使用chain...)