Comments 8
Ярким примером (генератора) являются функции range и enumerate
ненастоящий сварщик мутант, в отличие, скажем, от
По приведенному фрагменту видно, что
range
— count
, и на это стоит пролить немного света.from itertools import count
def test(f):
for i in f:
print(i, end=' ')
if i == 1:
break
print("~", end=' ')
for i in f:
print(i, end=' ')
if i == 2: # на всякий случай ;)
break
print()
def mygen():
yield 0
yield 1
yield 2
test([0, 1, 2]) # 0 1 ~ 0 1 2
test(range(3)) # 0 1 ~ 0 1 2
test(mygen()) # 0 1 ~ 2
test((i for i in (0, 1, 2))) # 0 1 ~ 2
test(count()) # 0 1 ~ 2
По приведенному фрагменту видно, что
range
ведёт себя как list
, что неудивительно — во втором питоне он и есть list
.+1
Вывод вашей функции test зависит то того, что возвращает метод iter: в первых двух случаях это итератор-обертка, а в остальных трёх — self, в котором есть метод next. На сколько я помню первое поведение является более правильным — если мы запрашиваем новый итератор, мы хотим итерировать с начала.
+1
во втором питоне он и есть listэто не так: во втором питоне range — всего лишь функция, возвращающая list
0
Замечательно, спасибо.
Хорошо бы только заменить мелкие ошибки вроде отсутствия запятых вокруг «на мой взгляд», а также использовать поменьше жаргона. Всё-таки у нас академической литературе про программированию уже порядка полста лет; смысла использовать новояз нет.
Хорошо бы только заменить мелкие ошибки вроде отсутствия запятых вокруг «на мой взгляд», а также использовать поменьше жаргона. Всё-таки у нас академической литературе про программированию уже порядка полста лет; смысла использовать новояз нет.
0
В стандартной библиотеки он объявлен
Начало интересное, но читать тяжело из-за частых проблем с падежами.
0
range еще умеет выдавать элементы по индексам, но слайсы не умеет
в отличие от итераторов.
Еще интересной особенностью, которой обладает итератор — это одноразовое использование
Статья получилась интересной, спасибо
In [1]: my_range = range(100)
In [2]: my_range[2]
Out[2]: 2
In [3]: my_range[:2]
Out[3]: range(0, 2)
в отличие от итераторов.
Еще интересной особенностью, которой обладает итератор — это одноразовое использование
Статья получилась интересной, спасибо
0
Sign up to leave a comment.
Итерируемый объект, итератор и генератор