在Python中检查循环

Hid*_*guy 2 python loops list python-2.7

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

list = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
Run Code Online (Sandbox Code Playgroud)

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

jpp*_*jpp 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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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]
Run Code Online (Sandbox Code Playgroud)

[4, 3, 2, 8] 打印出来.

说明

  • 您可以通过自身的移位版本迭代列表zip.
  • 对于每个三元组,测试您的两个条件.
  • 使用next提取这样的三胞胎; 如果不存在这样的三元组,您将遇到StopIteration错误.
  • 永远不要在内置后命名变量,例如使用lst而不是list.