当前位置: 首页 > 面试题库 >

遍历两个列表

阎承嗣
2023-03-14
问题内容

我有两个列表list1list2数字,我想使用相同的指令遍历它们。像这样:

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都是基于行的。 我有一些大的电子表格,我可以成功地遍历整个表格,但我只是想找出处理这种事情的最佳实践。 提前感谢。