簡體   English   中英

如何在列表中找到最小數字的所有位置? (蟒蛇)

[英]How do I find ALL the positions of the lowest numbers in a list? (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中進行操作?

您可以使用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效率最高的解決方案,因為它只運行一次列表。 @Mr 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]

每當我們找到新的最小值時,我們清除結果列表並添加新的數字。 每當我們找到相同的數字時,我們將其添加到列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM