我有以下代码:
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 我的代码在哪里出错?
答案 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"))