Mam listę składającą się z około 20000 list. Używam trzeciego elementu każdej listy jako flagi. Chcę wykonać kilka operacji na tej liście, o ile flaga przynajmniej jednego elementu ma wartość 0, to jest tak:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
Na początku wszystkie flagi mają wartość 0. Używam pętli while, aby sprawdzić, czy flaga przynajmniej jednego elementu ma wartość 0:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
Jeśli check(my_list)
wróci True
, kontynuuję pracę nad moją listą:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
Właściwie chciałem usunąć element z mojej_listy podczas iteracji, ale nie mogę usuwać elementów podczas iteracji.
Oryginalna moja lista nie miała flag:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Ponieważ nie mogłem usunąć elementów podczas iteracji, wymyśliłem te flagi. Ale my_list
zawiera wiele elementów, a while
pętla odczytuje je wszystkie w każdej for
pętli i zajmuje dużo czasu! Masz jakieś sugestie?
None
lub []
podczas iteracji na liście zamiast je usuwać. Sprawdzanie całej listy za pomocą „check ()” iterującego wszystkie elementy przed każdym przejściem w wewnętrznej pętli jest bardzo powolnym podejściem.