добавление к списку в понимании списка - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь получить минимум списка и с плавающей точкой, у меня был следующий код, но он выдавал ошибку

x=['14.99', '14.99', '15.00', '16.36']
y=21.00
min([float(i) for i in x.append(y)])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable
#x= ['14.99', '14.99', '15.00', '16.36', 21.0] y got appended  

Однако, если я это сделаю (добавьте y перед списком)

x=['14.99', '14.99', '15.00', '16.36']
y=21.00
x.append(y)
min([float(i) for i in x])

Вывод: 14.99 # правильный

Как я могу сделать это в одну строку?

Ответы [ 3 ]

3 голосов
/ 24 июня 2019

попробуйте это

min(y, min([float(i) for i in x]))

или этот будет более читабельным

min(y, min(map(float, x)))

в основном вы сравниваете число с плавающей точкой y с минимумом списка.

1 голос
/ 24 июня 2019

На мой взгляд, это очень уродливо, но вы можете сделать это так:

min([float(i) for i in x+[y])])
0 голосов
/ 24 июня 2019
x=['14.99', '14.99', '15.00', '16.36']
y=21.00
min(float(x) for x in x+[y])

Это объединяет y как список со списком x, а затем находит минимум всех из них.

См. Разрешить методу добавления списка Python для возврата нового списка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...