Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.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_For Loop - Fatal编程技术网

如何找到列表中最低数字的所有位置?(python)

如何找到列表中最低数字的所有位置?(python),python,for-loop,Python,For Loop,下面的代码返回列表中第一个最低数字的位置 xy = [50, 2, 34, 6, 4, 3, 1, 5, 2, 1, 10 ,1] t=0 for i in range(len(xy)): if xy[i]<xy[t]: t=i print(t) out: 6 xy=[50,2,34,6,4,3,1,5,2,1,10,1] t=0 对于范围内的i(len(xy)): 如果xy[i]可以使用Python预定义的min函数获取列表中的最小值,然后使

下面的代码返回列表中第一个最低数字的位置

xy = [50, 2, 34, 6, 4, 3, 1, 5, 2, 1, 10 ,1] 
t=0
for i in range(len(xy)):
    if xy[i]<xy[t]:        
        t=i
print(t)

out: 6
xy=[50,2,34,6,4,3,1,5,2,1,10,1]
t=0
对于范围内的i(len(xy)):

如果xy[i]可以使用Python预定义的
min
函数获取列表中的最小值,然后使用列表理解获取等于该最小值的值的索引,如下所示:

xy = [50, 2, 34, 6, 4, 3, 1, 5, 2, 1, 10 ,1]
lowest = min(xy)
positions = [i for i, v in enumerate(xy) if v == lowest]
print(positions) # ==> [6, 9, 11]

这应该是CPU效率最高的解决方案,因为它只运行列表一次@Geek先生的解决方案在记忆上应该稍微好一点,因为他的方法只产生一个结果列表

xy = [50, 2, 34, 6, 4, 3, 1, 5, 2, 1, 10 ,1]
min_val = sys.maxsize
result = []
for index, num in enumerate(xy):
  if num < min_val:
    min_val = num
    result = [index]
  elif num == min_val:
    result.append(index)
xy=[50,2,34,6,4,3,1,5,2,1,10,1]
最小值=sys.maxsize
结果=[]
对于索引,枚举中的num(xy):
如果num
结果现在包含
[6,9,11]


每当我们找到一个新的最小值时,我们就会清除结果列表并添加新的数字。每当我们找到相同的数字时,我们都会将其添加到列表中。

是的,我们刚刚意识到@davedwards。这不是因为列表中有3个数字才起作用吗?假设其他两个被移除。该代码不会更新最低值。它只给出单个最小值的位置。我想我把这个问题解释为“三个最小的数字”。@user5179531我想OP只是没有很好地表达他的问题,我想他想要最小值的位置,因为他没有提到三,因为有三个,所以是三。不过我不确定。