您可以創建自己的標誌類,它實現@StefanPochmann的想法並跟蹤已設置了多少標誌。
概念證明:
class flags:
def __init__(self,n):
self.__flags = [False]*n
self.__ntrue = 0
def flags(self):
return self.__flags[:] #so read only
def __len__(self):
return len(self.__flags)
def check(self,i):
return self.__flags[i]
def on(self,i):
if not self.check(i):
self.__ntrue +=1
self.__flags[i] = True
def off(self,i):
if self.check(i):
self.__ntrue -=1
self.__flags[i] = False
def toggle(self,i):
if self.check(i):
self.off(i)
else:
self.on(i)
def ntrue(self):
return self.__ntrue
測試,如:
import random
i = 0
f = flags(5)
while f.ntrue() != len(f):
i +=1
f.toggle(random.randint(0,4))
print(i,f.flags())
典型輸出:
19 [True, True, True, True, True]
保持TRUE;值的** **算? –
@StefanPochmann你可以發表這個答案。在OP的情況下,這比提出「全部」的答案要好。 –
Python具有'all'和'any'內建函數,'all'如果所有元素被評估爲'True'則返回'True',如果至少有一個元素評估爲'True'則'any'返回'True'。 – ettanany