Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找列表中最小的元素_Python_Element - Fatal编程技术网

Python 查找列表中最小的元素

Python 查找列表中最小的元素,python,element,Python,Element,我想找到lista的最小值。我知道有一个类似于min()的函数来查找值,但我想使用for-循环来完成它。 我使用if-语句得到了超出范围的错误索引,但我不知道原因 a = [18,15,22,25,11,29,31] n = len(a) tmp = a[0] for i in a: if(a[i] < tmp): tmp = a[i] print(tmp) a=[18,15,22,25,11,29,31] n=len(a) tmp=a[0] 对于我来说,

我想找到list
a
的最小值。我知道有一个类似于
min()
的函数来查找值,但我想使用
for
-循环来完成它。 我使用
if
-语句得到了超出范围的错误
索引,但我不知道原因

a = [18,15,22,25,11,29,31]
n = len(a)

tmp = a[0]
for i in a:
   if(a[i] < tmp):
      tmp = a[i]
      print(tmp)
a=[18,15,22,25,11,29,31]
n=len(a)
tmp=a[0]
对于我来说,在一个:
如果(a[i]
在Python中迭代列表时(
对于l中的e:
),您不会迭代索引,而是直接迭代元素。所以你应该写:

for e in a:
    if(e < tmp):
        tmp = e
        print(tmp)
对于a中的e:
如果(e
在Python中迭代列表时(
对于l中的e:
),您不会迭代索引,而是直接迭代元素。所以你应该写:

for e in a:
    if(e < tmp):
        tmp = e
        print(tmp)
对于a中的e:
如果(e
如前所述,您混合了元素迭代和索引循环。元素迭代的解决方案已经提出,因此为了完整性,我想写另一个解决方案:

a = [18,15,22,25,11,29,31]
n = len(a)

tmp = a[0]
for i in range(n):
    if(a[i] < tmp):
        tmp = a[i]
        print(tmp)
a=[18,15,22,25,11,29,31]
n=len(a)
tmp=a[0]
对于范围(n)中的i:
如果(a[i]

编辑:根据下面的注释,将
xrange
更改为
range

如前所述,您混合了元素迭代和索引循环。元素迭代的解决方案已经提出,因此为了完整性,我想写另一个解决方案:

a = [18,15,22,25,11,29,31]
n = len(a)

tmp = a[0]
for i in range(n):
    if(a[i] < tmp):
        tmp = a[i]
        print(tmp)
a=[18,15,22,25,11,29,31]
n=len(a)
tmp=a[0]
对于范围(n)中的i:
如果(a[i]


编辑:根据下面的注释将
xrange
更改为
range

因为
for a in i
迭代列表的内容,而不是索引<代码>一个[18]
导致一个
索引器
。作为旁注,您可能希望将
打印
移动到循环外部,而不是内部。否则,您将打印到目前为止看到的所有最低数字,除了第一个(因此它将打印
15
,然后打印
11
…或者,如果您给它
[1,2,3,4]
,它将不打印任何内容)。此外,如果条件允许,请不要在括号中加括号。这是Python,不是C。为什么人们对它投反对票,并投票决定关闭它?这怎么不是一个编程问题?当然,这是一个新手问题,但这并没有错。@abarnert看到“我得到的错误索引超出了范围……但我不知道为什么”,即使不粗略地尝试找出正在使用的索引,也会有点失望,这会解决这个“问题”以秒为单位,使用
打印
。因为
for a in i
迭代列表的内容,而不是索引<代码>一个[18]
导致一个
索引器
。作为旁注,您可能希望将
打印
移动到循环外部,而不是内部。否则,您将打印到目前为止看到的所有最低数字,除了第一个(因此它将打印
15
,然后打印
11
…或者,如果您给它
[1,2,3,4]
,它将不打印任何内容)。此外,如果条件允许,请不要在括号中加括号。这是Python,不是C。为什么人们对它投反对票,并投票决定关闭它?这怎么不是一个编程问题?当然,这是一个新手问题,但这并没有错。@abarnert看到“我得到的错误索引超出了范围……但我不知道为什么”,即使不粗略地尝试找出正在使用的索引,也会有点失望,这会解决这个“问题”用
print
以秒为单位。考虑到OP似乎使用的是Python 3
print
函数,而不是Python 2
print
语句,您不应该在回答中使用
xrange
。@abarnert是的,您是对的。我使用Python2,但总是从uuu future uuu导入print u函数执行
,因此我忽略了这一点。我将使用enumerateanyway@PadraicCunningham:无需在此枚举
的原因;
i
的唯一用途是在
a[i]
中,因此您也可以在a
中为e使用
。我很确定jure只是向你展示了OP如何使用索引,如果你真的想这样做的话,而不是建议他这样做。@abarnert,我不一定是在谈论这个案例,我的意思是如果我要给一个列表编制索引,我会使用enumerate not range,OP最好学习使用Enumerate,因为OP似乎使用的是Python 3
print
函数,而不是Python 2
print
语句,所以回答时不应该使用
xrange
。@abarnert是的,你是对的。我使用Python2,但总是从uuu future uuu导入print u函数
执行
,因此我忽略了这一点。我将使用enumerateanyway@PadraicCunningham:无需在此枚举
的原因;
i
的唯一用途是在
a[i]
中,因此您也可以在a
中为e使用
。我很确定jure只是向你展示了OP是如何使用索引的,如果你真的想这样做的,而不是建议他应该这样做。@abarnert,我不一定对这个案例感兴趣,我的意思是如果我要为一个列表编制索引,我会使用enumerate而不是range,OP最好学习使用enumerate