将行列表转换为列列表 Python

Convert list of rows to list of columns Python

提问人:layan 提问时间:11/23/2022 最后编辑:layan 更新时间:11/23/2022 访问量:473

问:

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

例如,从此列表列表中:

 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 列表 索引嵌 嵌套列表

评论


答:

1赞 Adid 11/23/2022 #1

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

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)]
1赞 stunlocked 11/23/2022 #2

使用 numpy:

x = numpy.fliplr(numpy.rot90(x, k=3))

rot90 旋转数组,fliplr 翻转数组,因此它看起来像一个列列表

仅使用 Python 函数:

x = list(zip(*x))

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

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

zip 基本上将列转换为行,并将它们作为元组返回。它需要可迭代对象,因此通过编写 *x,您可以将每一行作为可迭代对象传递。然后使用地图和列表将元组转换回列表。

评论

0赞 FAB 11/23/2022
我会在麻木旋转后添加,但我喜欢这个:).tolist()