比较 python 列表中的数字序列
Comparing a sequence of numbers in a python list
我想做一个循环来取一个数字,与下一个数字进行比较,如果条件为真,用下一个数字替换这个数字并将这个数字与下一个数字进行比较,直到这个数字不适合更多条件。
我试过这段代码,但循环不起作用。
list = [9,4,3,1,8,10,4,3,2]
for i,item in enumerate(list):
p = item
while p > list[i+1]:
p = list[i+1]
else:
print(p)
您可以为您的列表找到局部最小值(我想要输出数字:1 和 2。(波浪中的最小点)):
>>> data = [9, 4, 3, 1, 8, 10, 4, 3, 2]
通过向两端添加无穷大,使得第一个和最后一个元素也将被找到为最小值:
>>> padded = [float('inf')] + data + [float('inf')]
并将一个值与其左侧和右侧的值进行比较:
>>> [v2 for v1, v2, v3 in zip(padded[:-2], padded[1:-1], padded[2:]) if v1 > v2 < v3]
[1, 2]
list = [9,4,3,1,8,10,4,3,2]
list.append(float('Inf'))
for i,item in enumerate(list[:-1]):
if i == 0:
# skip this one, but make i count from 0
continue
if list[i-1] > item < list[i+1]:
print(item)
我想做一个循环来取一个数字,与下一个数字进行比较,如果条件为真,用下一个数字替换这个数字并将这个数字与下一个数字进行比较,直到这个数字不适合更多条件。 我试过这段代码,但循环不起作用。
list = [9,4,3,1,8,10,4,3,2]
for i,item in enumerate(list):
p = item
while p > list[i+1]:
p = list[i+1]
else:
print(p)
您可以为您的列表找到局部最小值(我想要输出数字:1 和 2。(波浪中的最小点)):
>>> data = [9, 4, 3, 1, 8, 10, 4, 3, 2]
通过向两端添加无穷大,使得第一个和最后一个元素也将被找到为最小值:
>>> padded = [float('inf')] + data + [float('inf')]
并将一个值与其左侧和右侧的值进行比较:
>>> [v2 for v1, v2, v3 in zip(padded[:-2], padded[1:-1], padded[2:]) if v1 > v2 < v3]
[1, 2]
list = [9,4,3,1,8,10,4,3,2]
list.append(float('Inf'))
for i,item in enumerate(list[:-1]):
if i == 0:
# skip this one, but make i count from 0
continue
if list[i-1] > item < list[i+1]:
print(item)