【问题标题】:Convert list of rows to list of columns Python将行列表转换为列列表 Python
【发布时间】:2022-11-23 19:17:27
【问题描述】:

Python。如何根据列表中的索引数将列表列表转换为列列表列表。但是每次我都可以有不同的矩阵(维度),不同的行/列表数和列表中不同的数字数

例如,从这个列表列表中:

 x = [
     [1, 0, 0, 0, 1, 0, 0],
     [0, 0, 2, 2, 0, 0, 0],
     [0, 1, 0, 0, 0, 2, 2]
 ]

到这个列列表列表:

y = [[1,0,0],[0,0,1],[0,2,0],[0,2,0],[1,0,0],[0,0,2],[0,0,2]]

【问题讨论】:

    标签: python list indexing nested nested-lists


    【解决方案1】:

    您可以使用zip 来执行此操作。通过将 x 解压到其子列表中并将其传递到 zip 中,您可以获得所需的格式:

    x = [
        [1, 0, 0, 0, 1, 0, 0],
        [0, 0, 2, 2, 0, 0, 0],
        [0, 1, 0, 0, 0, 2, 2]
    ]
    
    y = list(zip(*x))
    print(y)
    >>> [(1, 0, 0), (0, 0, 1), (0, 2, 0), (0, 2, 0), (1, 0, 0), (0, 0, 2), (0, 0, 2)]
    

    【讨论】:

      【解决方案2】:

      用麻木的:

      x = numpy.rot90(x)
      

      只有 python 函数:

      x = list(zip(*x))
      

      它将输出元组列表。如果您需要列表列表:

      x = list(map(list, zip(*x)))
      

      zip 基本上将列转换为行并将它们作为元组返回。它需要可迭代对象,因此通过编写 *x 可以将每一行作为可迭代对象传递。然后使用 map 和 list 将元组转换回列表。然而 numpy 旋转是最干净的方式,没有理由不使用它。

      【讨论】:

        猜你喜欢
        • 2018-01-17
        • 2016-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-18
        • 2019-04-23
        • 2019-01-23
        相关资源
        最近更新 更多