Eu tenho uma lista que consiste em como 20000 listas. Eu uso o terceiro elemento de cada lista como uma bandeira. Quero fazer algumas operações nesta lista, desde que pelo menos o sinalizador de um elemento seja 0, é como:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
No começo, todos os sinalizadores são 0. Uso um loop while para verificar se pelo menos o sinalizador de um elemento é 0:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
Se check(my_list)
retornar True
, continuarei trabalhando na minha lista:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
Na verdade, eu queria remover um elemento em my_list enquanto iterava sobre ele, mas não tenho permissão para remover itens enquanto iteramos sobre ele.
My_list original não tinha sinalizadores:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Como não consegui remover elementos enquanto iterava sobre ele, inventei esses sinalizadores. Mas o my_list
contém muitos itens, e o while
loop lê todos eles em cada for
loop e consome muito tempo! Você tem alguma sugestão?
None
ou à []
medida que itera na lista, em vez de removê-los. Verificar a lista inteira com 'check () `repetindo todos os itens antes de cada passagem no loop interno é uma abordagem muito lenta.