так как это создаст список из ключей словаря, который не изменится во время итерации

те рассмотрим этот код, который перебираетсписок при удалении элемента каждую итерацию:

x = list(range(5))

for i in x:
    print(i)
    x.pop()

Будет печатать0, 1, 2, Только первые три элемента печатаются, так как последние два элемента в списке были удалены первыми двумя итерациями.

Но если вы попробуете что-то похожее наДИКТ:

y = {i: i for i in range(5)}

for i in y:
    print(i)
    y.pop(i)

Будет печатать0затем поднятьRuntimeError: dictionary changed size during iterationпотому что мы удаляем ключ из словаря, перебирая его.

Конечно, изменение списка во время итерации - это плохо. Но почемуRuntimeError не поднял как в случае со словарем? Есть ли веская причина для такого поведения?

Ответы на вопрос(3)

Ваш ответ на вопрос