是否有任何pythonic方法可以找出变量在一堆变量中具有最小值。例如
In [5]: if d<c and d<b and d<a:
...: print "d is minimum.."
...:
d is minimum..
现在这里只有3个变量,所以我们可以用它来做,但是如果有那么多的变量需要比较呢?
请告诉我立即检查d 最大与否所有其他变量的情况。
检查d 等于所有其他变量怎么样?
我的解决方案:
可能我们可以在列表中添加需要比较的所有变量 并逐一比较它们,但我认为必须有更好的方法 使用python执行此操作。
答案 0 :(得分:8)
使用all
这将是有效的,因为它会短路:
if all(d < i for i in [1,5,4,4,6,6,4,4,5])
i
可以是任何可迭代的
你的例子是:
if all(d < i for i in (c, b, a))
答案 1 :(得分:5)
你看过min
函数了吗?
if d <= min(c,b,a):
...
当然,您也可以使用iterable:
if d <= min([c,b,a]):
...
我喜欢这个版本,因为它是显式。它很容易阅读。正如JonClements指出的那样,对于大型集合,可能有更有效的方法。
答案 2 :(得分:1)
>>> a=2
>>> b=6
>>> c=5
>>> d=1
>>> d==min(a,b,c,d)
True
答案 3 :(得分:1)
除了Python的内置min
函数之外,还有什么 Pythonic ?
f = [a,b,c]
if d < min(f):
print "d is the minimum"
。(..以及这里是python的内置min函数的文档)
如果您正在寻求更有效的方法,可以使用all
函数,一旦发现其中一个元素小于d
,就会停止迭代并返回false:
if all(d < x for x in a):
print "d is the minimum"