我有两个列表list1
和list2
数字,我想使用相同的指令遍历它们。像这样:
for item in list1:
print(item.amount)
print(item.total_amount)
for item in list2:
print(item.amount)
print(item.total_amount)
但这感觉多余。我知道我会写for item in list1 + list2:
,但是要付出一定的时间。
有没有办法做到这一点而又不浪费时间呢?
这可以通过以下方式完成
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
它仍然构造一个列表然后将其扔掉要快一些;仅将其作为最终解决方案。
问题内容: 在Python中有两个可迭代的对象,我想成对地讨论它们: 导致: 一种方法是遍历索引: 问题答案: Python 3 当或的较短者停止时,停止。 在Python 3 中,像在Python2中一样,返回元组的迭代器。要获取元组列表,请使用。要压缩直到两个迭代器都用尽,可以使用 。 Python 2 在Python 2中, 返回一个元组列表。当且不是很大时,这很好。如果它们都是大量的,则形
问题内容: 我想在Django模板中进行以下列表迭代: django代码: 尝试此操作时出现以下错误: 我该如何完成? 问题答案: 有可能做 但你无法zip在for结构内进行调用。你必须先将压缩列表存储在另一个变量中,然后对其进行迭代。
问题内容: 如何进行for循环或列表理解,以便每次迭代都给我两个元素? 输出: 问题答案: 你需要一个实施。 对于Python 2: 或更笼统地说: 在Python 3中,你可以替换为内置函数,然后删除import。 所有信贷蒂诺对他的回答到我的问题,我发现这是非常有效的,因为它只是在列表上循环一次,并在此过程中不会产生任何不必要的名单。 注意:不要将其与Python自己的文档中的pairwise
问题内容: 在同时处理2个元素的同时迭代列表的最佳方法是什么? 例: 结果是: 我想实现: 问题答案: 只需增加2:
//两个列表如何遍历输出1 5 2 6 3 7 4 8
我对POI还是新手,但是我想简单地在Excel工作簿中迭代一列。例如,在下表中,如果我只想要列A的值,即列0中的行0-3,有没有有效的方法来做到这一点?我所看到的所有POI都是基于行的。 我有一些大的电子表格,我可以成功地遍历整个表格,但我只是想找出处理这种事情的最佳实践。 提前感谢。