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 не дал соответствующих результатов.

0 ответов

Другие вопросы по тегам