从生成器填写列表

时间:2012-03-21 19:07:26

标签: python

如何从生成器返回的第一个'n'项中列出一个列表?

(我知道这很简单,我可以使用RTFM,但有时候POFSO会更容易。)

4 个答案:

答案 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)]

...假设您的生成器名为generatorn是您想要的元素数。

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)