python - 列表最小值与常量

标签 python list

我希望获得与常量相比的列表的最小值。因此,对于下面的 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/

相关文章:

C# 向列表中添加项目

python - Pandas :如何获得第一个正数?

python - 捕获所有出现的模式,直到 Python 中某个单词第一次出现

python - 以概率向数组添加元素

python - 比较列表列表中的元组值?

Java组合Set和List接口(interface)

Python正则表达式替换字符串

python - 跟踪文件上的列过滤

python - 根据元素拆分 Numpy 数组,其中数组的每个元素都是唯一的

jquery - HTML、CSS 中带有左右滚动箭头的列表