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

Python-遍历列表中的所有成对连续项

狄凯
2023-03-14
问题内容

给出清单

l = [1, 7, 3, 5]

我想遍历所有成对的连续列表项(1,7), (7,3), (3,5),即

for i in xrange(len(l) - 1):
    x = l[i]
    y = l[i + 1]
    # do something

我想以更紧凑的方式做到这一点,例如

for x, y in someiterator(l): ...

有没有办法使用内置的Python迭代器来做到这一点?我确定该itertools模块应该有解决方案,但我无法弄清楚。


问题答案:

只需使用拉链

>>> l = [1, 7, 3, 5]
>>> for first, second in zip(l, l[1:]):
...     print first, second
...
1 7
7 3
3 5

如建议的那样,你可能会考虑izipitertools很长的列表中使用此函数,而这些列表又不想创建新列表。

import itertools

for first, second in itertools.izip(l, l[1:]):
    ...


 类似资料:
  • 我对Haskell有点陌生,我试图生成列表的所有连续子列表。 我目前有以下几点: 我知道上面的函数会在删除最后一个元素的情况下生成子列表,但我不知道如何完成伪代码。 我的伪代码基本上是, 拿着完整的清单,去掉尾巴。将(x:xs)的xs传递到列表子列表中 例如,xs=[1,2,3][xs]列表子列表(init xs)将生成[1,2,3,4]、[1,2,3]、[1,2]、[1]、[1]、[1],[1]

  • 问题内容: 是否可以在Python中以以下方式迭代列表(将此代码作为伪代码进行处理)? 它应该产生 问题答案: 从食谱:

  • 问题内容: 给定多个长度可能不同的列表,我想遍历值的所有组合,每个列表中的一项。例如: 然后我想要的输出是: 我想遍历 合并 列表。我该如何完成? 问题答案: 应该可以。 请注意,它返回一个迭代器,因此,如果仅要迭代一次,则无需将其转换为列表。 例如。

  • 问题内容: 是否可以进行迭代而不是像这样编写? … 谢谢! 问题答案: 当然。 我看不出真正的问题是什么。您阅读过python教程吗?

  • 问题内容: 我正在运行以下代码,从具有特定列的所有表中提取所有相关的行。外层应该检查该迭代表中是否存在该列。如果没有,它应该完成该迭代并移至下一张表。如果表中有该列,则应检查该表是否将返回任何记录。如果没有要返回的记录,则应结束该迭代并移至下一个表。如果有记录,则应在SSMS中显示它们。 这似乎可行,因为SSMS仅返回带有有效条目的网格。我不明白的是:为什么我仍然会收到这些错误? 编辑 使用建议后

  • 问题内容: 我有一个这样的清单清单。 现在,我需要遍历上面的列表并输出一个字符串列表,如下所示(原始列表中没有数字) 问题答案: 准确执行您指定的操作的最简单解决方案是: 这基本上等效于迭代版本: 但是,这并不是遍历具有任意维数的多维列表的通用方法,因为嵌套列表推导/嵌套的for循环可能很难看。但是,对于2或3维列表,您应该放心。 如果您确实决定需要平整3个以上的尺寸,我建议实现一个递归遍历函数,