J'ai une liste composée de 20000 listes. J'utilise le troisième élément de chaque liste comme indicateur. Je veux faire quelques opérations sur cette liste tant que le drapeau d'au moins un élément est 0, c'est comme:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
Au début, tous les drapeaux sont à 0. J'utilise une boucle while pour vérifier si au moins le drapeau d'un élément est 0:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
Si je check(my_list)
reviens True
, je continue à travailler sur ma liste:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
En fait, je voulais supprimer un élément de ma_liste au fur et à mesure que je le répétais, mais je ne suis pas autorisé à supprimer des éléments au fur et à mesure que je le répète.
Ma liste d'origine n'avait pas de drapeaux:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Étant donné que je ne pouvais pas supprimer des éléments pendant que je le répétais, j'ai inventé ces drapeaux. Mais le my_list
contient de nombreux éléments, et la while
boucle les lit tous à chaque for
boucle, et cela prend beaucoup de temps! Avez-vous des suggestions?
None
ou au []
fur et à mesure que vous parcourez la liste au lieu de les supprimer. Vérifier toute la liste avec «check ()» en itérant sur tous les éléments avant chaque passage sur la boucle intérieure est une approche très lente.