首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到列表中最低数字的所有位置?(python)

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

Stack Overflow用户
提问于 2019-03-15 08:11:43
回答 2查看 68关注 0票数 3

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

代码语言:javascript
复制
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中操作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-15 08:15:19

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

代码语言:javascript
复制
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]
票数 4
EN

Stack Overflow用户

发布于 2019-03-15 08:26:11

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

代码语言:javascript
复制
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]

每当我们找到一个新的最小值时,我们就清除结果列表并添加新的数字。只要我们找到相同的数字,我们就把它添加到列表中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55173809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档