【问题标题】:Comparing a sequence of numbers in a python list比较python列表中的数字序列
【发布时间】:2016-06-10 10:47:23
【问题描述】:

我想创建一个循环来获取一个数字,与下一个数字进行比较,如果条件为真,则用下一个数字替换这个数字并将这个数字与下一个数字进行比较,直到这个数字不再适合条件. 我试过这段代码,但循环不起作用。

list = [9,4,3,1,8,10,4,3,2]

for i,item in enumerate(list):
        p = item  
        while p > list[i+1]:
              p = list[i+1]            

        else:
              print(p)

【问题讨论】:

  • 这个列表的预期输出是什么?
  • 我想要输出数字:1 和 2。(波浪中的最小点)
  • @user5960525 请将附加信息(关于预期输出)放在您的问题中(不在评论中)! stackoverflow.com/posts/35664948/edit

标签: python list comparator minimum


【解决方案1】:

您可以为您的列表找到局部最小值(我想要输出数字:1 和 2。(波浪中的最小点)):

>>> data = [9, 4, 3, 1, 8, 10, 4, 3, 2]

通过在两端添加无穷大,这样第一个和最后一个元素也将作为最小值找到:

>>> padded = [float('inf')] + data + [float('inf')]

并将一个值与其左侧和右侧的值进行比较:

>>> [v2 for v1, v2, v3 in zip(padded[:-2], padded[1:-1], padded[2:]) if v1 > v2 < v3]
[1, 2]

【讨论】:

    【解决方案2】:
    list = [9,4,3,1,8,10,4,3,2]
    
    list.append(float('Inf'))
    for i,item in enumerate(list[:-1]):
        if i == 0:
            # skip this one, but make i count from 0
            continue
    
        if list[i-1] > item < list[i+1]:
            print(item)
    

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2017-12-19
      • 1970-01-01
      • 2018-06-03
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      相关资源
      最近更新 更多