用于返回序列生成器的python

2024-09-28 18:59:45 发布

您现在位置:Python中文网/ 问答频道 /正文

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

>>> 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):

如何在这个函数中使用上述代码??你知道吗


Tags: 函数代码in列表for数量defrange
1条回答
网友
1楼 · 发布于 2024-09-28 18:59:45

我想itertools.product就是你要找的

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函数总是返回生成器

相关问题 更多 >