这可以使用itertools.chain
来实现:
import itertools
l1 = [1, 2, 3, 4]
l2 = [5, 6, 7, 8]
for i in itertools.chain(l1, l2):
print(i, end=" ")
将打印:
1 2 3 4 5 6 7 8
根据文档,
chain
的作用如下:
制作一个迭代器,从第一个可迭代对象返回元素,直到耗尽,然后继续到下一个可迭代对象,直到所有可迭代对象都耗尽。
如果您的列表在一个列表中,则可以使用
itertools.chain.from_iterable
。
l = [l1, l2]
for i in itertools.chain.from_iterable(l):
print(i, end=" ")
这会产生相同的结果。
如果你不想为此导入一个模块,编写一个函数也很简单:
def custom_chain(*it):
for iterab in it:
yield from iterab
这需要使用Python 3,对于Python 2,只需使用一个循环将它们yield
回去:
def custom_chain(*it):
for iterab in it:
for val in iterab:
yield val
除了之前提到的,Python 3.5
还可以在列表字面量中拆包:
for i in [*l1, *l2]:
print(i, end=" ")
虽然这比l1 + l2
略快,但仍会构建一个列表,然后将其丢弃; 仅在最后作为解决方案。