我有关于循环的问题。 想象一下你有这个数据数组:
list = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
如何编写一个循环来检查前一个数字是否较低,以及下一个数字是否在检查之后(条件看起来像[5,6,5]
)。因此循环将到达数字9并打印或保存它,无论如何。
答案 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