Ho un elenco composto da circa 20000 elenchi. Uso il 3 ° elemento di ogni lista come una bandiera. Voglio fare alcune operazioni su questo elenco fino a quando almeno un flag di elemento è 0, è come:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
All'inizio, tutti i flag sono 0. Uso un ciclo while per verificare se almeno un flag di elemento è 0:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
Se check(my_list)
ritorna True
, quindi continuo a lavorare sul mio elenco:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
In realtà, volevo rimuovere un elemento in my_list come ho iterato su di esso, ma non mi è permesso rimuovere gli elementi mentre eseguo iterazioni su di esso.
My_list originale non aveva flag:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Dal momento che non riuscivo a rimuovere gli elementi mentre scorrevo su di esso, ho inventato queste bandiere. Ma my_list
contiene molti elementi e while
loop li legge tutti in ogni for
loop e richiede molto tempo! Hai qualche suggerimento?
None
o []
mentre fai scorrere l'elenco invece di rimuoverli. Controllare l'intero elenco con 'check () `che scorre su tutti gli elementi prima di ogni passaggio sul ciclo interno è un approccio molto lento.