首页 > 解决方案 > 如何找到列表中最低数字的所有位置?(Python)

问题描述

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

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 中进行操作?

标签: pythonfor-loop

解决方案


您可以使用 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]

推荐阅读