Я создал два метода перечисления, один из которых возвращает список, а другой возвращает доход / генератор:
def enum_list(sequence, start=0):
lst = []
num = start
for sequence_item in sequence:
lst.append((num, sequence_item))
num += 1
return lst
def enum_generator(sequence, start=0):
num = start
for sequence_item in sequence:
yield (num, sequence_item)
num += 1
Несколько вопросов по этому поводу:
(1)Изменить список на генератор так же просто, как сделать:
# build via list
l = list()
for item in items:
l.append(item)
# build via iterator
# l = list() (1) <== delete this line
for item in items:
yield item # (2) change l.append(...) to yield ...
(2) Является ли «ленивая оценка» единственной причиной использования генератора, или есть и другие причины?