Python 如何在列表中获取本地min?

Python 如何在列表中获取本地min?,python,list,Python,List,有人能推荐一种方法来获取列表中的本地最小值吗 例如,我有一个列表[50,50,49,49,49,50,50,49,49,49,49,48,48,47,47,48,48,13,12,11,10,11,12] 我想得到答案和索引 我已经试过了,但是我得到的答案像是[49,50,47,48,10,11,12] 有人能帮我修改代码吗 非常感谢 for i in range(len(list)): if (i != 0) & (i+1 != len(list)): if (

有人能推荐一种方法来获取列表中的本地最小值吗

例如,我有一个列表
[50,50,49,49,49,50,50,49,49,49,49,48,48,47,47,48,48,13,12,11,10,11,12]

我想得到答案和索引

我已经试过了,但是我得到的答案像是
[49,50,47,48,10,11,12]

有人能帮我修改代码吗

非常感谢

for i in range(len(list)):
    if (i != 0) & (i+1 != len(list)):
        if (list[i] == list[i + 1]):
            repeat += 1
        elif (list[i] < list[i - 1]):
            repeat = 1
            continue
        elif (list[i] < list[i + 1]):
            group_list.append(list[i])
范围内i的
(len(list)):
如果(i!=0)和(i+1!=len(list)):
如果(列表[i]==列表[i+1]):
重复+=1
elif(list[i]
您可以循环浏览列表,找到列表从减少到增加的地方

def局部最小值(lst):
分钟=[]
递减=真
对于范围内的i(透镜(lst)-1):
a=lst[i]
b=lst[i+1]
如果不降低且ba:
追加(a)分钟
递减=假
返回分钟
>>局部最小值([50,50,49,49,49,50,50,49,49,49,49,49,48,48,47,47,48,48,13,12,11,10,11,12])
[49, 47, 10]

注意:请避免使用
列表
作为列表的名称<代码>列表是Python中预定义的关键字。您可以使用
检查您是否在列表的开头或结尾,同时将值与其左右进行比较。假设您的列表名为
l
,我想您需要:

mins = [x for i,x in enumerate(l) if ((i==0) or (l[i-1]>=x)) and ((i==len(l)-1) or (x<l[i+1]))]

我将首先删除重复项。然后继续选择满足条件的所有数字。谢谢您的回复。在我的情况下,副本经常出现。所以我需要考虑条件。你的答案看起来不错,但是边界的局部极小值呢,比如说
local_minima([3,2,1])
?@jasonwong你可以添加一些东西来检查它是否仍然在很容易地减少。另一方面,检查它是否在开始时增加更难(例如,
local_minima([2,2,3])
);将需要添加更多的代码,但概念类似。感谢您的回复。这是工作,解决了我的问题。如果列表压缩变得太混乱,您可以始终使用for循环。@VishalSingh我认为太混乱是主观的。我觉得这个列表非常可读,尽管你可能不同意:)谢谢你的回复和建议。@L.MH欢迎你。请查看以接受答案,并欢迎访问SO。
[49, 47, 10]