如何在Python中实现“if-for”语句?
我想用Python对一个列表里的每个项目进行测试,如果列表中的每个项目都符合某个条件,就执行一个特定的操作。
简单来说,就是:如果“对列表中的每个x进行的测试”都是真的,那么就做“这个事情”。
看起来应该有个简单的方法来实现这个。
我在Python中应该用什么样的语法呢?
6 个回答
4
示例(测试所有元素是否都大于0)
if all(x > 0 for x in list_of_xs):
do_something()
上面的代码最开始使用了列表推导式(if all([x > 0 for x in list_of_xs]):
),但是正如delnan指出的(谢谢他),使用生成器表达式会更快,因为生成器表达式在遇到第一个False
时就会停止,而这个表达式会对列表中的所有元素进行比较。
不过,使用生成器表达式时要小心,比如:
all(x > 0 for x in list_of_xs)
如果你使用的是pylab(通过命令'ipython -pylab'启动ipython),那么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
28
使用 all()
。这个函数接受一个可迭代的对象作为参数,如果所有的元素都能被判断为 True
,它就会返回 True
。举个例子:
if all((3, True, "abc")):
print "Yes!"
你可能需要某种生成器表达式,比如
if all(x > 3 for x in lst):
do_stuff()