实现矩阵转置的两种方式

1). 列表生成式

2). 内置函数zip

li = [ 
 [1,2,3,3,4], 
 [4,5,6,2,1], 
 [7,8,9,1,2] 
 ]


方法一 列表生成式

li = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12],
    [13,14,15,16]
]
print([item2 for item1 in li for item2 in item1])

pythonk矩阵转置 python求矩阵转置_Python


方法1:

print([[ row[columnIndex] for row in li] for columnIndex in range(5)]) 
 columnIndex=0=====> 返回的是每一行的第0个索引值; [1,4,7] 
 columnIndex=1=====> 返回的是每一行的第0个索引值; [2,5,8]

方法二 内置函数zip

li = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12],
    [13,14,15,16]
]
"""
    *li: 解包
    zip    1).打包函数, 用于将可迭代的对象作为参数,
           将对象中对应的元素打包成一个个元组,
           然后返回由这些元组组成的列表。
           2).如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,
           利用 * 号操作符,可以将元组解压为列表
           3). zip 方法在 Python 2 和 Python 3 中的不同:
           在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。
           如需展示列表,需手动 list() 转换。
"""

print(list(zip(*li)))

pythonk矩阵转置 python求矩阵转置_列表生成式_02