2012-02-07 101 views
9

有没有一种方法可以内联此循环?内联表达式评估

already_inserted = True 
for i in indexes: 
    already_inserted = already_inserted and bitfield[i] 

回答

11
already_inserted = all(bitfield[i] for i in indexes) 
+0

(+1)相同的速度确实:) – NPE 2012-02-07 11:23:25

10

如何:

already_inserted = all(bitfield[i] for i in indexes) 
+0

+1:两个头脑以相同的速度工作:) – 2012-02-07 11:22:19

+6

还有了'all'功能的两个优点:1)它将*计算短路,并在找到第一个“False”值时停止迭代; 2)它是内置的,因此迭代完全在Python VM中的C代码中运行。 – 2012-02-07 11:32:06

1

所有()函数接受迭代并会自动遍历所有元素,并应用布尔他们每个人。因此,足够写:

already_inserted = all(bitfield)