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

时间:2019-03-15 00:11:43

标签: 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

我想获得所有最低数字的位置。在这种情况下,应为6,9,11。如何在基本Python中进行操作?

2 个答案:

答案 0 :(得分:4)

您可以使用Python的预定义this.settings = Object.assign({}, this.settings); 函数来获取列表中的最小值,然后使用列表理解来获取等于该最小值的值的索引,如下所示:

min

答案 1 :(得分:2)

这应该是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)

结果现在包含[6, 9, 11]

只要找到新的最小值,我们就会清除结果列表并添加新的数字。只要我们找到相同的号码,就会将其添加到列表中。