压缩任意长度的列表列表

时间:2015-11-28 16:58:24

标签: python

以下是我所拥有的一个例子:

x1 = [1,2,3]
x2 = [4,5,6]

如果我跑:

x3 = zip([x1,x2])

我得到:[([1,2,3],),([4,5,6])]

如果我跑:

x3 = zip(x1,x2)

我得到了我想要的东西:[(1,4),(2,5),...]

以下是问题的症结所在:

我有一个函数签名,我想将其定义为:

def function(...):
    return [x1,x2,...],y

其中x1和x2,...是每个列表,x的数量是任意的......

我需要输出这样的输出,基本上是:

[(x1[0],x2[0],...,xn[0]), (x1[1],x2[1],...,xn[1]),...,(x1[n2],x2[n2],...,xn[n2])]

如果我从函数中输出一个元组,那么zip仍会失败(它会像列表一样拉链):

def function(x1,x2):
     return (x1,x2)

x4 = zip(function(x1,x2))

output: [([1,2,3],),...]

我唯一能想到的是以某种方式积累一个论点......但我有一种感觉,我试图用zip做的事情可能是不可能的。有没有办法传回一个向量列表,并将它们转换为行列表,其中元素是每个向量的第一个元素?我真的宁愿避免python for循环这样做......(甚至可以累积一个参数传递给函数?)

1 个答案:

答案 0 :(得分:3)

一如既往。

zip(*[x1,x2])