Mam listę zawierającą około 20000 list. Używam trzeciego elementu każdej listy jako flagi. Chcę zrobić kilka operacji na tej liście tak długo jak flaga przynajmniej jeden element jest 0, to jak:Jak sprawdzić, czy wszystkie elementy listy pasują do warunku?
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
Na początku wszystkie flagi są 0. użyć pętli while, aby sprawdzić, czy co najmniej jeden element na Flaga jest 0:
def check(lista):
for item in lista:
if item[2] == 0:
return True
return False
If check(my_list)
powraca True
, to będę kontynuował pracę na mojej liście:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
Właściwie chciałem usunąć element my_list jak powtórzyć nad nim, ale nie wolno mi usuwać przedmiotu, ponieważ go powtarzam.
Original my_list nie mają flagi:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Ponieważ nie mogę usunąć elementy jak potwierdzili nad nim, wymyśliłem te flagi. Ale my_list
zawiera wiele elementów, a pętla while
odczytuje je wszystkie w każdej pętli for
i zajmuje dużo czasu! Masz jakieś sugestie?
wygląda jak struktura danych nie jest idealnym rozwiązaniem dla Twojego problemu.Jeśli wytłumaczysz kontekst nieco bardziej, może będziemy mogli zaproponować coś bardziej odpowiedniego. – uselpa
Być może możesz zamienić elementy na "Brak" lub "[]" podczas iteracji na liście zamiast ich usuwania. Sprawdzanie całej listy za pomocą "check()" iteracji wszystkich elementów przed każdym przejściem do wewnętrznej pętli jest bardzo powolnym podejściem. – martineau