Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
大型列表,查找列表的所有最小值(python)_Python_List - Fatal编程技术网

大型列表,查找列表的所有最小值(python)

大型列表,查找列表的所有最小值(python),python,list,Python,List,给定一个大的波动值列表,如何确定所有局部最小值?不使用numpy。局部最小值是指列表中的所有值,它们是函数的波谷 List_y = [23, 8, -7, 57, 87, 6] 我想: New_list = [-7, 6] def本地最小值(ys): 返回[y代表i,y在枚举中(ys) 如果((i==0)或(ys[i-1]>=y)) 和((i==len(ys)-1)或(y>>当地居民([23,8,-7,57,87,6]) [-7, 6] >>>本地_min([23,6,6,6,42]) [6

给定一个大的波动值列表,如何确定所有局部最小值?不使用numpy。局部最小值是指列表中的所有值,它们是函数的波谷

List_y = [23, 8, -7, 57, 87, 6]
我想:

New_list = [-7, 6]
def本地最小值(ys):
返回[y代表i,y在枚举中(ys)
如果((i==0)或(ys[i-1]>=y))
和((i==len(ys)-1)或(y>>当地居民([23,8,-7,57,87,6])
[-7, 6]
>>>本地_min([23,6,6,6,42])
[6]
>>>本地_min([6,6,4])
[4]

我非常喜欢分阶段迭代这些问题

l = [23, 8, -7, -7, 57, 87, 6]

# Remove identical neighbors
# l becomes [23, 8, -7, 57, 87, 6]
l = [x for x,y in zip(l[0:], l[1:]) if x != y] + [l[-1]]

# Append positive infinity to both endpoints
# l becomes [inf, 23, 8, -7, 57, 87, 6, inf]
l = [float("inf")] + l + [float("inf")]

# Retain elements where each of their neighbors are greater than them.
# l becomes [-7, 6]
l = [y for x, y, z in zip(l[0:], l[1:], l[2:]) if x > y < z]
l=[23,8,-7,-7,57,87,6]
#删除相同的邻居
#l变成[23,8,-7,57,87,6]
l=[x代表x,y在zip中(l[0:],l[1:]),如果x!=y]+[l[-1]]
#向两个端点追加正无穷大
#l变成[inf,23,8,-7,57,87,6,inf]
l=[float(“inf”)]+l+[float(“inf”)]
#保留每个相邻元素都大于它们的元素。
#l变成[-7,6]
l=[y表示zip中的x,y,z(l[0:],l[1:],l[2:]),如果x>y
在这里,您可以轻松理解数组排序

my_array = [10,20,30,5,1,8,2,14,6,29] #main array
if len(my_array) > 0:
    my_array.sort() #sorting array(min to max)
    min = my_array[0] #after sorting get min value
    print(min) #print min value
else:
    print("array is empty")

如果数字小于两边的两个。可能的重复在这里没有提及。不要假设人们自动拥有外部库。你需要更具体地说明“本地最小值”的含义。编辑您的问题并为我们提供一些预期的输入/输出。
[23,6,6,6,42]
应该返回什么?给定
[6,6,4]
,您将打印
[6,4]
@BillLynch:Nicecatch@BillLynch:我用另一种方式更改了它,您能帮我找出其他缺陷吗?给定
[4,6,6]
,您将打印
[4,6]
。但是
6
根本不是列表中的局部极小值
[4,6,6]
。哦,好吧。我认为这是被低估了:)正如我从它的定义中理解的那样,极小值并不是严格地比它的邻域小,但可能等于(它们中的)任何一个。因此,我认为删除相同邻居的步骤可能会被取消,代码是:
>>l=[23,8,-7,-7,57,87,6]
>>l=[float(“inf”)]+l+[float(“inf”)]
>>l=[y代表zip中的x,y,z(l[0:],l[1:],l[2:]),如果x>=y>>l
[-7,-7,6]
@boardrider:Then
3443
会报告
343
这是错误的。此外,在评论中,John说他可以只从您建议的输入中获得
-7,-6
。我同意更准确的解决方案应该是
-7-76
,但要想得到这个答案就更难了@Bill,为什么
3 4 3
错了(如果我们把minimal定义为@boardrider:John从来没有完全阐明他所说的minima是什么意思。你所建议的定义很可能就是他想要的。我个人认为这更像是一个函数。所以我们不能只看邻居。
my_array = [10,20,30,5,1,8,2,14,6,29] #main array
if len(my_array) > 0:
    my_array.sort() #sorting array(min to max)
    min = my_array[0] #after sorting get min value
    print(min) #print min value
else:
    print("array is empty")