Python имеет функции генератора, специально созданные для этой цели. См. Документы here. Помимо использования range
(в документах предлагается использовать xrange
, который возвращает генератор), ваша реализация прекрасна.
Документы имеют следующий пример:
# Build and return a list
def firstn(n):
num, nums = 0, []
while num < n:
nums.append(num)
num += 1
return nums
sum_of_first_n = sum(firstn(1000000))
, что отходы много пространства. Таким образом, документы предлагают делать что-то вроде этого, вместо:
# Using the generator pattern (an iterable)
class firstn(object):
def __init__(self, n):
self.n = n
self.num, self.nums = 0, []
def __iter__(self):
return self
def next(self):
if self.num < self.n:
cur, self.num = self.num, self.num+1
return cur
else:
raise StopIteration()
sum_of_first_n = sum(firstn(1000000))
ваш список не будет всегда заказывать правильно? – jamylak
Здесь будет неплохо. – Blender
Вы имеете в виду 'если item> 10' – ajon