Python:找到最小整数

时间:2010-04-12 14:57:48

标签: python list integer

我有以下代码:

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 个答案:

答案 0 :(得分:34)

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

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

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

x = min(l, key=float)

答案 1 :(得分:23)

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

您可能也对min内置函数感兴趣,该函数已经执行了当前循环所执行的操作(没有转换,即。)

答案 2 :(得分:18)

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

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

或者如果它确实是您想要的字符串,那么您要使用min的{​​{1}}参数

key

答案 3 :(得分:6)

Python有一个内置的min函数来帮助您找到最小的。

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

min(float(i) for i in l)

答案 4 :(得分:3)

l是一个字符串列表。当您在单引号之间放置数字时,您正在创建字符串,这只是一系列字符。为了使代码正常工作,您必须这样做:

l = [-1.2, 0.0, 1]  # no quotation marks

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

如果必须使用字符串列表,可以尝试让Python尝试从每个字符串中生成一个数字。这类似于Justin's answer,除非它正确理解浮点(十进制)数。

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

x = 100.0
for i in l:
    inum = float(i)
    if inum < x:
        x = inum
print x

我希望这是您编写的用于学习Python或编程的代码。如果是这样的话,很棒。但是,如果这是生产代码,请考虑使用Python的内置函数。

l = ['-1.2', '0.0', '1']
lnums = map(float, l)  # turn strings to numbers
x = min(lnums)  # find minimum value
print x

答案 5 :(得分:2)

在进行比较之前将变量转换为浮点数:

if float(i) < float(x):

问题是你要将字符串与浮点数进行比较,这不起作用。

答案 6 :(得分:2)

number_list = [99.5,1.2,-0.3]

number_list.sort()

print number_list[0]

答案 7 :(得分:2)

list1 = [10,-4,5,2,33,4,7,8,2,3,5,8,99,-34]

print(list1)

max_v=list1[0]

min_v=list1[0]

for x in list1:
    if x>max_v:
        max_v=x
        print('X is {0} and max is {1}'.format(x,max_v))
for x in list1:
    if x<min_v:
        min_v=x
        print('X is {0} and min is {1}'.format(x,min_v))

print('Max values is ' + str(max_v))
print('Min values is ' + str(min_v))

答案 8 :(得分:1)

或者根本没有浮动转换只需在列表中指定浮点数。

l = [-1.2, 0.0, 1]
x = min(l)

l = min([-1.2, 0.0, 1])

答案 9 :(得分:1)

l = [-1.2, 0.0, 1]

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

这就是答案,我需要这样做我的作业,拿走你的代码,我删除了数字周围的“”,然后工作了,我希望这有帮助

答案 10 :(得分:1)

你必须从正确的代码开始:

返回最小值的代码

l = [ '0.0', '1','-1.2'] x = l[0] for i in l: if i < x: x = i print x

但是再次使用直接整数而不是使用引用''

是件好事

这样

l = [ 0.0, 1,-1.2] x = l[0] for i in l: if i < x: x = i print x

答案 11 :(得分:0)

列表中有字符串,您将它们与数字100.0进行比较。

答案 12 :(得分:0)

'''功能'''

import math

#functions
def min3(x1,x2,x3):
    if x1<= x2 and x1<= x3:
        return x1
    elif x2<= x1 and x2<= x3:
        return x2
    elif x3<= x2 and x3<= x1:
          return x3
print(min3(4, 7, 5))

print(min3(4, 5, 5))

print(min3(4, 4, 4))

print(min3(-2, -6, -100))

print(min3("Z", "B", "A"))