Ответ 1
Чтобы найти минимальное значение списка, вы можете просто использовать min
:
x = min(float(s) for s in l) # min of a generator
У меня есть следующий код:
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 Где мой код идет не так?
Чтобы найти минимальное значение списка, вы можете просто использовать min
:
x = min(float(s) for s in l) # min of a generator
Вы не сравниваете целые числа, вы сравниваете строки. Строки сравнивают лексикографически - значение символа по характеру - вместо (как вам кажется, требуется) путем преобразования значения в float. Сделайте свои номера для хранения списка (поплавки или целые числа, в зависимости от того, что вы хотите) или преобразуете строки в плавающие или целые числа в вашем цикле, прежде чем сравнивать их.
Вы также можете быть заинтересованы в встроенной функции min
, которая уже выполняет то, что делает ваш текущий цикл (без преобразования, то есть.)
Похоже, вы хотите преобразовать список в список чисел
>>> 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'
Python имеет встроенную функцию min
, которая поможет вам найти самый маленький.
Однако вам нужно преобразовать элементы списка в числа, прежде чем вы сможете найти самое низкое целое число (что, разве это не плавает?)
min(float(i) for i in l)
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 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
Переместите переменную в float перед выполнением сравнения:
if float(i) < float(x):
Проблема в том, что вы сравниваете строки с поплавками, которые не будут работать.
l = [-1.2, 0.0, 1]
x = 100.0
for i in l:
if i < x:
x = i
print (x)
Это ответ, мне нужно это для моей домашней работы, взял ваш код, и я удалил "" вокруг чисел, затем он работал, я надеюсь, что это помогло
number_list = [99.5,1.2,-0.3]
number_list.sort()
print number_list[0]
Вы должны начать где-то правильный код:
Код для возврата минимального значения
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
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))
У вас есть строки в списке, и вы сравниваете их с номером 100.0.
Или никакого преобразования float вообще, просто указав поплавки в списке.
l = [-1.2, 0.0, 1]
x = min(l)
или
l = min([-1.2, 0.0, 1])