在Python中检查循环

时间:2018-06-05 12:03:03

标签: python python-2.7 list loops

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

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

如何编写一个循环来检查前一个数字是否较低,以及下一个数字是否在检查之后(条件看起来像[5,6,5])。因此循环将到达数字9并打印或保存它,无论如何。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

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