【问题标题】:Compare two adjacent elements in same list比较同一列表中的两个相邻元素
【发布时间】:2019-05-05 19:22:14
【问题描述】:

我已经完成了post,但我想知道我在使用for 循环时在代码中做错了什么。

列出a 为:

a = [2, 4, 7,1,9, 33]

我只想比较两个相邻的元素:

2 4
4 7
7 1
1 9
9 33

我做了类似的事情:

for x in a:
    for y in a[1:]:
        print (x,y)

【问题讨论】:

    标签: python python-3.x list list-comprehension


    【解决方案1】:

    您正在将一个稳定元素与列表中除第一个之外的所有元素进行比较。

    正确的方法是:

    for i in range(len(a)-1):
        x = a[i]
        y = a[i+1]
        print (x,y)
    

    【讨论】:

      【解决方案2】:

      您的外循环在您的内循环中持续存在 每个 值。要比较相邻元素,您可以zip 一个列表,该列表本身具有移位版本。可以通过list slicing实现移位:

      for x, y in zip(a, a[1:]):
          print(x, y)
      

      在一般情况下,如果您的输入是任何可迭代而不是列表(或另一个支持索引的可迭代),您可以使用itertools pairwise recipe,也可在more_itertools 库中使用:

      from more_itertools import pairwise
      
      for x, y in pairwise(a):
          print(x, y)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-08
        • 2012-05-04
        • 1970-01-01
        • 1970-01-01
        • 2019-12-07
        • 2021-04-28
        相关资源
        最近更新 更多