簡體   English   中英

列表中最小的數字-Python

[英]Smallest Number in a List - Python

我正在嘗試編寫一個函數,該函數接受列表輸入並返回該列表中最小數字的索引。 例如,

minPos( [5,4,3,2,1] ) → 4

運行函數時,出現列表索引錯誤,有人可以幫忙嗎? 謝謝。 我無法使用內置函數min()。

def MinPos(L):
     Subscript = 0
     Hydrogen = 1
     SmallestNumber = L[Subscript]

    while L[Subscript] < len(L):
          while  L[Subscript] < L[Subscript + Hydrogen]:
                Subscript += 1
                return SmallestNumber

          while L[Subscript] > L[Subscript + Hydrogen]:
                Subscript += 1

    return SmallestNumber


def main():
    print MinPos( [-5,-4] )

也許是這樣的:

>>> def min_pos(L):
...    min = None
...    for i,v in enumerate(L):
...        if min is None or min[1] > v:
...            min = (i,v)
...    return min[0] if min else None


>>> min_pos([1,3,4,5])
0

>>> min_pos([1,3,4,0,5])
3

編輯:如果為空列表,則返回None

由於您已經知道如何找到最小值,因此只需將其輸入給index()函數即可獲取該值在列表中的索引。 也就是說,

>>> n = ([5,4,3,2,1])
>>> n.index(min(n))
4

這將返回列表中最小值的索引。 請注意,如果有多個最小值,它將返回第一個。

我建議使用for ...enumarate()

data = [6, 3, 2, 4, 2, 5]

try:
    index, minimum = 0, data[0]
    for i, value in enumerate(data):
        if value < minimum:
            index, minimum = i, value
except IndexError:
    index = None
print index
# Out[49]: 2

編輯添加了防止空data保護措施

暫無
暫無

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

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