Python: 找到最小整数

26 投票
13 回答
160772 浏览
提问于 2025-04-15 21:30

我有以下代码:

l = ['-1.2', '0.0', '1']

x = 100.0
for i in l:
    if i < x:
        x = i
print x

这段代码应该能找到我列表中最小的值(-1.2),但是当我打印'x'的时候,它却显示的值还是100.0。我的代码哪里出错了呢?

13 个回答

18

看起来你想把这个列表转换成数字的列表。

>>> foo = ['-1.2', '0.0', '1']
>>> bar = map(float, foo)
>>> bar
[-1.2, 0.0, 1.0]
>>> min(bar)
-1.2

或者如果你确实想要的是字符串的话,你可以使用 min 函数的 key 参数。

>>> foo = ['-1.2', '0.0', '1']
>>> min(foo, key=float)
'-1.2'
24

你现在比较的不是数字,而是字符串。字符串的比较是按字母顺序进行的,也就是说一个字符一个字符地比,而不是像你想的那样把它们转换成浮点数来比较。你可以让你的列表里存放数字(根据你的需求,可以是浮点数或整数),或者在循环中把字符串转换成浮点数或整数,然后再进行比较。

你可能还会对内置的 min 函数感兴趣,它已经实现了你当前循环的功能(当然,不包括转换的部分)。

42

要找出一个列表中的最小值,你可以直接使用 min 这个函数:

x = min(float(s) for s in l) # min of a generator

或者,如果你想要结果是字符串而不是浮点数,可以使用一个 关键函数

x = min(l, key=float)

撰写回答