0

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

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

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

也许我们可以将所有需要比较的变量添加到一个列表中并一个一个地比较它们,但我认为必须有更好的方法来使用 python 来做到这一点。

4

4 回答 4

8

使用allwhich 将是有效的,因为它会短路:

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))
于 2012-09-05T12:41:59.127 回答
5

你看过min函数吗?

if d <= min(c,b,a):
   ...

当然,您也可以使用可迭代对象:

if d <= min([c,b,a]):
   ...

我喜欢这个版本,因为它是明确的。这很容易阅读。正如 JonClements 指出的那样,对于大型集合,可能有更有效的方法来执行此操作。

于 2012-09-05T12:41:47.250 回答
1
>>> a=2
>>> b=6
>>> c=5
>>> d=1
>>> d==min(a,b,c,d)
True
于 2012-09-05T12:42:44.693 回答
1

有什么比 Python 的内置函数更Pythonic的呢?min

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"
于 2012-09-05T12:43:09.607 回答