Python: 找到最小整数
我有以下代码:
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
函数感兴趣,它已经实现了你当前循环的功能(当然,不包括转换的部分)。