【发布时间】: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
我有这个关于循环的问题。 想象一下你有这个数据数组:
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
将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。【讨论】:
你可以写一个简单的循环来检查前一个数是否小于当前数,下一个数是否等于前一个数:
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
【讨论】: