Как проверить, все ли элементы списка соответствуют условию?

У меня есть список, состоящий примерно из 20000 списков. Я использую третий элемент каждого списка в качестве флага. Я хочу выполнить некоторые операции над этим списком, пока флаг хотя бы одного элемента равен 0, например:

my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]

В начале все флаги равны 0. Я использую цикл while, чтобы проверить, равен ли флаг хотя бы одного элемента 0. :

def check(list_):
    for item in list_:
        if item[2] == 0:
            return True
    return False

Если check(my_list)возвращает True, то я продолжаю работать со своим списком:

while check(my_list):
    for item in my_list:
        if condition:
            item[2] = 1
        else:
            do_sth()

На самом деле, я хотел удалить элемент в my_list по мере его повторения. , но мне не разрешено удалять элементы, когда я перебираю их.

Исходный my_list не имел флагов:

my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]

Поскольку я не мог удалять элементы по мере его повторения, я изобрел эти флаги. Но my_listсодержит много элементов, и цикл whileсчитывает их все в каждом цикле for, и на это уходит много времени! Есть ли у вас какие-либо предложения?

188
задан ivan_pozdeev 11 June 2018 в 11:29
поделиться