用于返回序列生成器的Python

用于返回序列生成器的Python,python,generator,Python,Generator,我必须生成一个函数,它接受任意数量的序列并返回元组列表。 我已尝试使用以下代码编写代码,通过列表中的生成器逐个生成元组: >>> gen1 = [(x,y) for x in range(3) for y in range(4)] >>> gen1 [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)] >>&g

我必须生成一个函数,它接受任意数量的序列并返回元组列表。 我已尝试使用以下代码编写代码,通过列表中的生成器逐个生成元组:

>>> gen1 = [(x,y) for x in range(3) for y in range(4)]
>>> gen1
[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
>>> iter1 = iter(gen1)
>>> iter1.next()
>>> def gen3():
...     yield iter1.next()
...
>>> next(gen3())
这就是给出元组。但我需要在包含许多参数序列的以下函数中应用相同的代码:

def generator_zip(seq1, seq2, *more_seqs):
如何在这个函数中使用上述代码???

我想这就是您想要的

import itertools

print list(itertools.product(range(3), range(4)))

>> [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), 
>> (2, 0), (2, 1), (2, 2), (2, 3)]

print list(itertools.product(range(2), range(3), range(4)))

>> [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 1, 0), (0, 1, 1), 
>> (0, 1, 2), (0, 1, 3), (0, 2, 0), (0, 2, 1), (0, 2, 2), (0, 2, 3), 
>> (1, 0, 0), (1, 0, 1), (1, 0, 2), (1, 0, 3), (1, 1, 0), (1, 1, 1), 
>> (1, 1, 2), (1, 1, 3), (1, 2, 0), (1, 2, 1), (1, 2, 2), (1, 2, 3)]

请注意,itertools函数总是返回生成器

顺便说一句,您在提出的每个问题中都使用了“phyton”一词,并且自己从未添加过[python]标记。这种语言被称为“Python”,而不是“Phyton”,如果你没有正确地标记,你将很难获得帮助。你重新发明这种功能有什么原因吗?它已经存在于
itertools.izip
中。这看起来更像是itertools.product而不是itertools.izipoly他的例子<代码>生成器\u zip。。。听起来就像是izip…我不能使用itertools函数,但我可以使用izip实现。但是,不能得到它。@Icfsethit实际上并不难。A x B x C=(A x B)x C=AB x C=ABC。通过使用迭代方法,您可以将前两个列表合并到一个列表中,直到您有一个列表为止。我认为iZip是用C实现的,您可能找不到它的python代码。