range()
в Python 3 возвращает выделенный объект неизменным. Вы должны включить его в список, чтобы расширить его:
primes = list(range(3, limit, 2))
primes.append(2)
Обратите внимание, что я использовал list.append()
, не list.extend()
(который ожидает последовательности значений, а не одно целого числа).
Однако, возможно, вы захотите, чтобы запустил вашу петлю с 2
, а не ее конец. Более того, материализация всего диапазона в списке требует некоторой памяти и убивает эффективность объекта. Используйте итератор вместо цепочки:
from itertools import chain
primes = chain([2], range(3, limit, 2))
Теперь вы можете перебирает primes
без материализации всего списка в памяти, и по-прежнему включаете в себя 2
в начале цикла.
Распечатайте ожидаемый о /п. –
@ python-coder: Python 3: 'AttributeError: объект 'range' не имеет атрибута 'extend''. –