2012-02-07 102 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)