在Python列表中找到最小值
我想在一个列表里找出最小的值。我知道可以用 min()
函数,但我正在学习Python,想自己动手实现一下,练习练习:
x=[2,3,5,9,1,0,2,3]
z=len(x)-1
i=0
for i in range(z):
if x[i]<x[i+1]:
y=x[i]
else:
y=x[i+1]
print(y)
不过,这段代码并没有找到最小值。我该怎么改才能找到列表 x
的最小值呢?
5 个回答
0
添加一个临时变量,这个变量用来存放最小值,比如先比较 x[0]
和 x[1]
的大小,然后再比较 x[1]
和 x[3]
,依此类推。加油!
1
你在检查相邻的值,并比较它们哪个更大,然后把这个值赋给y。如果你想找出列表中的最小值,那就得找出所有值中最小的那个。因此,不要只在两个相邻的元素之间找最小值,而是要把列表中的每个元素都和你当前的最小值进行比较。如果你发现某个元素比你现在的最小值还小,那这个元素就成了新的最小值。
1
你在循环的时候根本没有记录最小值。所以在你的代码中,实际上返回的是最后两个值中的最小值(在这个例子中是2和3)。
要解决这个问题,你需要保持一个到目前为止看到的最小值,如果在循环中遇到的值比这个最小值还小,就更新它。这样,等你循环结束时,它就会保存整个列表中的最小值。
4
你的问题在于,你只是在比较列表中相邻的值。你的程序应该记住到目前为止你检查过的最小值,然后把其他值和这个最小值进行比较。
这就是给你的提示!
4
尽量不要用数字去索引列表。直接遍历整个列表会简单得多。
x = [2,3,5,9,1,0,2,3]
def my_min(sequence):
"""return the minimum element of sequence"""
low = sequence[0] # need to start with some value
for i in sequence:
if i < low:
low = i
return low
print my_min(x)