代码之家  ›  专栏  ›  技术社区  ›  Hiddenguy

python中的检查循环

  •  2
  • Hiddenguy  · 技术社区  · 7 年前

    我有个关于循环的问题。 假设您有这个数据数组:

    list = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
    

    如何编写一个循环来检查前一个数字是否较低,检查后一个数字是否较低(条件如下 [5,6,5] )所以循环将到达数字9并打印或保存它,不管怎样。

    2 回复  |  直到 7 年前
        1
  •  5
  •   jpp    7 年前

    使用 next 使用生成器表达式:

    lst = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
    
    res = next(j for i, j, k in zip(lst, lst[1:], lst[2:]) if i < j and i == k)
    

    如果您需要所有这些数字,请使用列表理解:

    res = [j for i, j, k in zip(lst, lst[1:], lst[2:]) if i < j and i == k]
    

    如果您需要一个条件,该条件将显示高于上一个和下一个数字的所有数字:

    lst = [1,2,3,4,3,2,3,1,2,1,2,3,4,5,6,7,8,6]
    
    res = [j for i, j, k in zip(lst, lst[1:], lst[2:]) if i < j > k]
    

    [4, 3, 2, 8] 打印。

    解释

    • 您可以通过 zip .
    • 对于每一个三胞胎,测试你的两个条件。
    • 使用 下一个 提取这样的三胞胎;如果不存在这样的三胞胎,您将遇到 StopIteration 错误。
    • 不要在内置变量之后命名变量,例如使用 lst 而不是 list .
        2
  •  1
  •   RoadRunner    7 年前

    您可以编写一个简单的循环,检查前一个数字是否小于当前数字,下一个数字是否等于前一个数字:

    lst = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
    
    for i in range(len(lst)):
        if lst[i-1] < lst[i] and lst[i-1] == lst[i+1]:
            print(lst[i])
    
    # 9