gen_list = (x*x for x in range(3))
for i in gen_list:
print(i)
0
1
4
def gen_list():
lis = range(3)
for i in lis:
yield i*i
my_list = gen_list()
for i in my_gen:
print(i)
0
1
4
def forever(lst):
while True:
for item in lst:
yield item
','.join(str(x) for x in lst)
def str_gen(lst):
for item in lst:
yield str(item)
','.join(str_get(lst))
(x**2 for x in range(5))
это лишь упрощенная запись функции-генератора для использования в простых случаях ( не путать с генераторами списков: [x**2 for x in range(5)]
. Отличие лишь в скобках, а смысл совершенно разный, ведь генераторные выражения выдают значения на ходу, генератор списков заранее создает весь список, и уже потом выдает его значения как iterable). >>> def g():
... while True:
... yield 'a'
... yield 'b'
... yield 'c'
...
>>> list(zip(g(), range(10)))
[('a', 0), ('b', 1), ('c', 2), ('a', 3), ('b', 4), ('c', 5), ('a', 6), ('b', 7), ('c', 8), ('a', 9)]
>>>