如何在 Python 中同时对多个不同的列表进行相同的迭代
How do I make the same iteration for several different lists at the same time in Python
如果我有多个不同长度的列表,是否有一种简单的方法可以对所有列表进行相同的迭代。
所以我不想写这样的东西:
for item in list1:
function(item)
for item in list2:
function(item)
.
.
.
for item in listn:
function(item)
我只是写了这样的东西:
for item in list1,list2,...,listn:
function(item)
我知道你可以通过组合列表来做到这一点我想要一些比每次调用函数时都必须组合它们更有效的东西
itertools
module涵盖了与迭代有关的任务。
你有一个chain()
function可以做到
import itertools
for item in itertools.chain(list1, list2, list3):
function(item)
顺便说一句,整个标准库文档值得一读,有很多有趣的东西可以防止你重新发明轮子。
您可以创建一个 generator expression,它会从各个列表中逐一给出项目,就像这样
for item in (elem for c_list in (list1, list2, list3) for elem in c_list)):
function(item)
例如,
>>> def function(item):
... print item
...
>>> list1, list2, list3 = [1, 2], [3, 4], [5, 6]
>>> for item in (elem for c_list in (list1, list2, list3) for elem in c_list):
... function(item)
...
1
2
3
4
5
6
注意:我们创建的生成器表达式并没有连接所有列表,它只是迭代列表的元组,然后迭代各个列表以通过一.
如果我有多个不同长度的列表,是否有一种简单的方法可以对所有列表进行相同的迭代。
所以我不想写这样的东西:
for item in list1:
function(item)
for item in list2:
function(item)
.
.
.
for item in listn:
function(item)
我只是写了这样的东西:
for item in list1,list2,...,listn:
function(item)
我知道你可以通过组合列表来做到这一点我想要一些比每次调用函数时都必须组合它们更有效的东西
itertools
module涵盖了与迭代有关的任务。
你有一个chain()
function可以做到
import itertools
for item in itertools.chain(list1, list2, list3):
function(item)
顺便说一句,整个标准库文档值得一读,有很多有趣的东西可以防止你重新发明轮子。
您可以创建一个 generator expression,它会从各个列表中逐一给出项目,就像这样
for item in (elem for c_list in (list1, list2, list3) for elem in c_list)):
function(item)
例如,
>>> def function(item):
... print item
...
>>> list1, list2, list3 = [1, 2], [3, 4], [5, 6]
>>> for item in (elem for c_list in (list1, list2, list3) for elem in c_list):
... function(item)
...
1
2
3
4
5
6
注意:我们创建的生成器表达式并没有连接所有列表,它只是迭代列表的元组,然后迭代各个列表以通过一.