我希望获得与常量相比的列表的最小值。因此,对于下面的 a,我希望得到 [0.5,1] 结果。
In [1]: a=[0.5,2]
In [2]: min(a,1)
Out[2]: 1
我也不明白下面发生了什么。
In [3]: min(a,[1,1])
Out[3]: [0.5, 2]
基本上,将列表与常量进行比较的最有效方法是什么?
最佳答案
如果可以的话(而且你可能可以),这种类型的 bug 是升级到 Python 3 的一个很好的理由。对于列表和 int 的排序没有定义的规则,因此 Python 2 应用了一个称为“任意但一致”的规则 - 基本上,仅使用类型来定义顺序,并且不考虑两个对象的确切值。 Python 3 会告诉你它不知道如何做到这一点,而不是仅仅给出一个奇怪的结果:
>>> min([0.5,2], 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < list()
无论如何,您似乎想要的是与常量 1
进行逐元素比较,以便获得结果列表。您可以通过列表理解明确地得到它:
>>> a = [0.5, 2]
>>> [min(b,1) for b in a]
[0.5, 1]
关于python - 列表最小值与常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33050266/