Python:找到最小整数

sar*_*rah 25 python integer list

我有以下代码:

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

x = 100.0
for i in l:
    if i < x:
        x = i
print x
Run Code Online (Sandbox Code Playgroud)

代码应该找到我的列表中的最低值(-1.2),但是当我打印'x'时它发现值仍然是100.0我的代码出错在哪里?

Oli*_*ier 40

要查找列表的最小值,您可以使用min:

x = min(float(s) for s in l) # min of a generator
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望将结果作为字符串而不是浮点数,请使用键函数:

x = min(l, key=float)
Run Code Online (Sandbox Code Playgroud)

  • 对于与此类似的情况,`min`有一个`key`参数,其用法如`x = min(l,key = float)`.它与发布的代码略有不同,它返回原始iterable中的一个项(即字符串''-1.2'`)而不是结果的东西(即浮点数`-1.2`). (7认同)

Tho*_*ers 23

你不是在比较整数,而是在比较字符串.字符串按字典顺序进行比较 - 意味着逐个字符 - 而不是(如您所愿)通过将值转换为浮点数.在比较它们之前,使列表保持数字(浮点数或整数,取决于您想要的数字),或将字符串转换为循环中的浮点数或整数.

您可能也对min内置函数感兴趣,它已经完成了当前循环所做的事情(没有转换,即.)


Mik*_*ham 18

看起来您想将列表转换为数字列表

>>> foo = ['-1.2', '0.0', '1']
>>> bar = map(float, foo)
>>> bar
[-1.2, 0.0, 1.0]
>>> min(bar)
-1.2
Run Code Online (Sandbox Code Playgroud)

或者如果它真的是你想要的字符串,你想要使用minkey论点

>>> foo = ['-1.2', '0.0', '1']
>>> min(foo, key=float)
'-1.2'
Run Code Online (Sandbox Code Playgroud)


sat*_*oru 6

Python具有内置min函数,可帮助您找到最小的函数.

但是,您需要将列表项转换为数字才能找到最小的整数(什么,不是那个浮点数?)

min(float(i) for i in l)
Run Code Online (Sandbox Code Playgroud)