【问题标题】:Checking loop in Python在 Python 中检查循环
【发布时间】:2018-06-05 12:03:02
【问题描述】:

我有这个关于循环的问题。 想象一下你有这个数据数组:

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

您将如何编写一个循环来检查前一个数字是否较小,以及检查后的数字是否较小(条件看起来像这样[5,6,5])。所以循环将到达数字 9 并打印或保存它,无论如何。

【问题讨论】:

    标签: python python-2.7 list loops


    【解决方案1】:

    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 使用自身的移位版本来迭代列表。
    • 对于每个三元组,测试您的两个条件。
    • 使用next提取这样的三元组;如果不存在这样的三元组,您将遇到StopIteration 错误。
    • 永远不要在内置变量之后命名变量,例如使用lst 而不是list

    【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 2019-01-18
      • 2022-11-11
      • 2018-07-09
      • 2017-05-19
      • 2016-03-07
      • 2020-02-12
      • 2023-03-03
      • 2016-11-28
      相关资源
      最近更新 更多