下面的代码返回列表中第一个最小数字的位置。
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中操作?
发布于 2019-03-15 08:15:19
您可以使用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]发布于 2019-03-15 08:26: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)结果现在包含[6, 9, 11]
每当我们找到一个新的最小值时,我们就清除结果列表并添加新的数字。只要我们找到相同的数字,我们就把它添加到列表中。
https://stackoverflow.com/questions/55173809
复制相似问题