【发布时间】:2016-10-27 05:54:38
【问题描述】:
def peaks(iterable):
z = []
i = iter(iterable)
v2 = next(i)
try:
while True:
v1, v2 = v2, next(i)
if v1 > v2:
z.append(v1)
elif v1 < v2:
continue
except StopIteration:
pass
return z
此函数返回一个 int 列表,用于表示可迭代对象中大于它们前后值的值:peaks([0, 1, -1, 3, 8, 4, 3, 5, 4, 3, 8]) 返回 [1, 8, 5]。此结果意味着值 1、8 和 5 严格大于它们之前和之后的值。
但是当我使用[0, 1, -1, 3, 8, 4, 3, 5, 4, 3, 8] 时,它返回[1, 8, 4, 5, 4] 而不是[1, 8, 5]。
当我使用[5, 2, 4, 9, 6, 1, 3, 8, 0, 7] 时,它返回[5, 9, 6, 8] 而不是[9, 8]。
谁能告诉我如何解决它?谢谢。
【问题讨论】:
-
"elif v2
-
好的...我改变了它。但它仍然产生相同的结果