Изменение коллекции. Счетчик при перечислении?

counter = Counter()
// fill data into counter
for a, b in counter.most_common():
    if (b > 1):
        counter[a] = np.log(b)
    else:
        counter[a] = -np.log((1 / (b+0.01)))

Как я вижу, это безопасно, основываясь на моем испытании. Ничего плохого не происходит, когда я меняю коллекцию, пока я ее перечисляю. На других языках в каждом цикле for, counter.most_common() значение оценивается.

Разве это не происходит и в Python?

1 ответ

Нет, это не так. Более наглядный пример:

def example():
    print("Ping")
    return [1,2,3,4]

for x in example():
    print(x)

Выход:

Ping
1
2
3
4
Другие вопросы по тегам