Python 在列表理解中附加到列表
我试图得到一个列表和浮动的最小值,我有下面的代码,但它给出了错误Python 在列表理解中附加到列表,python,list,Python,List,我试图得到一个列表和浮动的最小值,我有下面的代码,但它给出了错误 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=
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
输出为:14.99#正确
我怎么能在一行中做到这一点呢?在我看来这很难看,但你可以这样做:
min([float(i) for i in x+[y])])
我认为这很难看,但你可以这样做:
min([float(i) for i in x+[y])])
这将y
作为一个列表连接到x
列表,然后查找所有列表的最小值
看
这将y
作为一个列表连接到x
列表,然后查找所有列表的最小值
请参阅。试试这个
min(y, min([float(i) for i in x]))
或者这个更具可读性
min(y, min(map(float, x)))
基本上,您可以将浮动y与列表中的最小值进行比较。试试这个
min(y, min([float(i) for i in x]))
或者这个更具可读性
min(y, min(map(float, x)))
基本上,您可以将浮点y与列表中的最小值进行比较。
list.append()
始终返回None
,如果这是您所要求的,则与大多数其他列表操作方法相同。@MikeScotty不是x的iterable?是的,但这不是重点。您正在尝试迭代x.append(y)
的返回值,它是None
@MikeScotty那么我怎样才能在一行中执行此操作呢?list.append()
始终返回None
,如果这是您要问的,与大多数其他列表操作方法一样。@MikeScotty不是一个可编辑的对象?是的,但这不是重点。您正在尝试迭代x.append(y)
的返回值,它是None
@MikeScotty那么我如何在一行中执行此操作?什么是外观更好的方法“外观更好的方法”是如何保留您的原始代码。它更具可读性,甚至应该更有效(附加到现有对象,而不是创建一个新对象,或者说两个新对象,因为您首先从y
创建一个新列表,然后从x
和[y]
创建另一个新列表)。我将使用两行来明确说明:\u list=[float(I)for I in x]+[y]
然后min(\u列表)
。如果你不在乎重写x,那么你发布的代码就是最好的。什么是更好看的方法。它更具可读性,甚至应该更有效(附加到现有对象,而不是创建一个新对象,或者说两个新对象,因为您首先从y
创建一个新列表,然后从x
和[y]
创建另一个新列表)。我将使用两行来明确说明:\u list=[float(I)for I in x]+[y]
然后min(\u列表)
。如果你不介意重写x,那么你发布的代码是最好的。我想要5项中的最少项,而不是list@programmerwiz32这些将给出至少5项。您可以通过设置y=11进行检查,例如,它将给出11。我想要5项中的最小值,而不是list@programmerwiz32这些将给出至少5项。您可以通过设置y=11进行检查,例如,它将给出11。