【问题标题】:zipping an arbitrary-length list of lists [duplicate]压缩任意长度的列表列表[重复]
【发布时间】:2015-11-28 16:58:23
【问题描述】:

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

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

如果我改为从函数中输出一个元组,压缩仍然会失败(它会像列表一样压缩它):

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

x4 = zip(function(x1,x2))

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

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

【问题讨论】:

    标签: python


    【解决方案1】:

    一如既往。

    zip(*[x1,x2])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2023-03-04
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 2017-05-04
      • 2013-10-06
      相关资源
      最近更新 更多