列表中的最小数字-Python

列表中的最小数字-Python,python,while-loop,Python,While Loop,我正在尝试编写一个函数,它接受列表输入并返回该列表中最小数字的索引。 比如说, minPos( [5,4,3,2,1] ) → 4 当我运行我的函数时,我得到一个列表索引错误,有人能帮我吗?谢谢我无法使用内置函数min() def最小位置(L): 下标=0 氢=1 SmallestNumber=L[下标] 当L[下标]

我正在尝试编写一个函数,它接受列表输入并返回该列表中最小数字的索引。 比如说,

minPos( [5,4,3,2,1] ) → 4
当我运行我的函数时,我得到一个列表索引错误,有人能帮我吗?谢谢我无法使用内置函数min()

def最小位置(L):
下标=0
氢=1
SmallestNumber=L[下标]
当L[下标]L[下标+氢]:
下标+=1
返回最小号
def main():
打印MinPos([-5,-4])

因为您已经知道如何找到最小值,所以只需将该值输入index()函数,即可在列表中获得该值的索引。即

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

这将返回列表中最小值的索引。请注意,如果存在多个最小值,它将返回第一个。

因为您已经知道如何找到最小值,只需将该值输入index()函数即可获得列表中该值的索引。即

>>> n = ([5,4,3,2,1])
>>> n.index(min(n))
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(无)

可能类似以下内容:

>>> 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

我建议对…和
enumarate()使用

data=[6,3,2,4,2,5]
尝试:
索引,最小值=0,数据[0]
对于i,枚举中的值(数据):
如果值<最小值:
索引,最小值=i,值
除索引器外:
索引=无
打印索引
#Out[49]:2

编辑添加了防止空
数据的保护措施

我建议对…
枚举()使用

data=[6,3,2,4,2,5]
尝试:
索引,最小值=0,数据[0]
对于i,枚举中的值(数据):
如果值<最小值:
索引,最小值=i,值
除索引器外:
索引=无
打印索引
#Out[49]:2

编辑添加了防止空
数据的保护

您能重新输入代码吗?此外,函数名应该是“min_pos”,而所有变量都应该是小写的,这是Python中的一个自定义值。请重新输入代码好吗?此外,函数名应为“min_pos”,而所有变量应为小写,这是Python中的自定义。OP表示不能使用内置的min函数。OP表示不能使用内置的min函数。空列表中断(
None[0]
)空列表中断(
None[0]