В случае сложного синтаксиса добавьте операторы печати.
for i in ((x,x ** 2) for x in range(1,100+1)):
print i
Не слишком полезно.
Попробуйте это.
a = ((x,x ** 2) for x in range(1,100+1))
print a
for i in a:
print i
Полезный? Может быть.
Попробуйте это:
a = ((x,x ** 2) for x in range(1,100+1))
b = list(a)
print b
Хм. Перестает работать и цикл for i in a
. Этот генераторный объект , кажется, делает это только один раз. Либо в цикле for, либо в функции list()
(или tuple()
), но не в обоих.
Попробуйте это.
for x in range(1,100+1):
print x, x**2
Хорошо. Итак, что мы узнали?
((x,x ** 2) for x in range(1,100+1))
является выражением генератора. http://www.python.org/dev/peps/pep-0289/
Это "итерируемый" и может использоваться в операторе for
или функции list()
.
Кроме того, мы научились добавлять операторы печати для изучения запутанного синтаксиса.