找到一个数字的更多pythonic方法对所有数字都是最小的

时间:2012-09-05 12:40:20

标签: python compare max minimum

是否有任何pythonic方法可以找出变量在一堆变量中具有最小值。例如

In [5]: if d<c and d<b and d<a:
   ...:     print "d is minimum.."
   ...:     
d is minimum..

现在这里只有3个变量,所以我们可以用它来做,但是如果有那么多的变量需要比较呢? 请告诉我立即检查d 最大与否所有其他变量的情况。
检查d 等于所有其他变量怎么样?
我的解决方案:

  

可能我们可以在列表中添加需要比较的所有变量   并逐一比较它们,但我认为必须有更好的方法   使用python执行此操作。

4 个答案:

答案 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"