“怎么做?”;如果是“如果”;python中的语句?

“怎么做?”;如果是“如果”;python中的语句?,python,Python,对于python,我希望在整个列表上运行一个测试,如果列表中的每个项目的所有语句都为true,则执行特定的操作 伪代码:如果“列表”中的每个x的“涉及x的测试”都为真,则执行“this” 似乎应该有一个简单的方法来做到这一点 我应该在python中使用什么语法 使用all()。它将iterable作为参数,如果所有条目的计算结果均为True,则返回True。例如: if all((3, True, "abc")): print "Yes!" 您可能需要某种生成器表达式,如 if all

对于python,我希望在整个列表上运行一个测试,如果列表中的每个项目的所有语句都为true,则执行特定的操作

伪代码:如果“列表”中的每个x的“涉及x的测试”都为真,则执行“this”

似乎应该有一个简单的方法来做到这一点

我应该在python中使用什么语法

使用
all()
。它将iterable作为参数,如果所有条目的计算结果均为
True
,则返回
True
。例如:

if all((3, True, "abc")):
    print "Yes!"
您可能需要某种生成器表达式,如

if all(x > 3 for x in lst):
    do_stuff()

include
是您希望为列表中的每个元素执行的操作,
yourlist
是您的原始列表,
某些动作
是您希望在所有语句都为真时执行的操作。

我相信您希望使用
all()
方法:

$ python
>>> help(all)
Help on built-in function all in module __builtin__:

all(...)
    all(iterable) -> bool

    Return True if bool(x) is True for all values x in the iterable.
示例(测试所有元素是否大于0)

上面最初使用了一个列表理解(
if all([x>0表示x在列表中]):
),正如delnan(感谢)指出的那样,当生成器表达式在第一个
False
处终止时,生成器表达式将更快,而此表达式将比较应用于列表的所有元素

但是,请注意生成器表达式,如:

all(x > 0 for x in list_of_xs)
如果您使用的是pylab(将ipython作为“ipython-pylab”启动),则all函数将替换为numpy.all,因为它不能正确处理生成器表达式

all([x>0 for x in [3,-1,5]]) ## False
numpy.all([x>0 for x in [3,-1,5]]) ## False
all(x>0 for x in [3,-1,5]) ## False
numpy.all(x>0 for x in [3,-1,5]) ## True 
如果列表中的所有元素都是
True

类似地,如果任何元素为True,将返回
True

all()
如果需要额外的
map()
阶段,单独使用
all()将无法正常工作

见下文:

all((x==0 for x in xrange(1000))
以及:


第二个示例将执行1000次比较,即使第二次比较也会使整个结果为假。

什么是
invovle
?Python中是否存在这种情况?@Sven只是在OP中出现:“全部参与”、“某些动作”。这应该是一个生成器表达式!!由于生成器按需计算值,(1)您不会在整个列表上浪费任何内存,(2)您在第一次出错后从未计算过值,因为
all
在那里中止,不会进一步消耗生成器。太棒了!谢谢用它来解决一些工程问题。使用all语句查找10001素数要容易得多!
all([x>0 for x in [3,-1,5]]) ## False
numpy.all([x>0 for x in [3,-1,5]]) ## False
all(x>0 for x in [3,-1,5]) ## False
numpy.all(x>0 for x in [3,-1,5]) ## True 
>>> x = [True, False, True, False]
>>> all(x)
False
all((x==0 for x in xrange(1000))
all([x==0 for x in xrange(1000)])