在Python列表中找到最小值

2 投票
5 回答
32979 浏览
提问于 2025-04-18 13:48

我想在一个列表里找出最小的值。我知道可以用 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)

撰写回答