如何从生成器返回的第一个'n'项中列出一个列表?
(我知道这很简单,我可以使用RTFM,但有时候POFSO会更容易。)
答案 0 :(得分:3)
itertools
模块中有islice
命令执行以下操作:
>>> import itertools
>>> iterator = itertools.count() #just counter from 0 to infinity
>>> list(itertools.islice(iterator,10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
答案 1 :(得分:1)
import itertools
foo = [x for x in itertools.islice(generator, n)]
...假设您的生成器名为generator
,n
是您想要的元素数。
itertools library有很多有用的胶水。
答案 2 :(得分:0)
您想使用islice
:
from itertools import islice
it = (i for i in [1,2,3,4])
sliced = islice(it,2)
for i in it:
print i
# output:
# 1
# 2
答案 3 :(得分:0)
这是一个用所选范围内所有斐波那契数的平方来填充列表的生成器:
def fibonacci_numbers(nums):
x, y = 0, 1
for _ in range(nums):
x, y = y, x+y
yield x
def square(nums):
for num in nums:
yield num**2
a = input("Write the number of elements: ")
a = int(a)
list1 = [x for x in square(fibonacci_numbers(a))]
print(list1)