如何找到列表中最低数字的所有位置?(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只是没有很好地表达他的问题,我想他想要最小值的位置,因为他没有提到三,因为有三个,所以是三。不过我不确定。