list.append в генераторах Python
Я написал очень простую функцию генератора:
def prefixes(xs):
prefix = []
for x in xs:
prefix.append(x)
yield prefix
Я ожидал, что результат будет:
>>> list(prefixes([1, 2, 3]))
[[1], [1, 2], [1, 2, 3]]
Но я получил:
>>> list(prefixes([1, 2, 3]))
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
Это очень странно. Как первая итерация дает весь список? current
должен содержать только первый элемент. Почему вывод такой, какой он есть, а не тот, который я ожидаю?
PS Поиск "python list.append в генераторах" в Google не дал соответствующих результатов.