python矩阵转置和zip

Raj*_*eev 9 python

如何获得这个矩阵的转置..任何更简单,算法的方法来做到这一点......

第一个问题:

 Input  a=[[1,2,3],[4,5,6],[7,8,9]]
 Expected output a=[[1, 4, 7], [2, 5, 8], [3, 6, 9]] 
Run Code Online (Sandbox Code Playgroud)

第二个问题:

Zip给我下面的输出如下所示,当我不知道数组中有多少元素时我怎么能拉链,在这种情况下我知道3个元素a [0],a [1],a [2]但是怎么能我拉链[n]元素

 >>> zip(a[0],a[1],a[2])
 [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Run Code Online (Sandbox Code Playgroud)

Udi*_*Udi 18

用途zip(*a):

>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Run Code Online (Sandbox Code Playgroud)

工作原理:zip(*a)等于zip(a [0],a [1],a [2]).

  • 如果你有`map(list,zip(*a))`,我会提出这个问题,因为这样就可以在不使用非标准模块的情况下回答问题. (2认同)

luk*_*ree 14

问题答案:

>>> import numpy as np
>>> first_answer = np.transpose(a)
>>> second_answer = [list(i) for i in zip(*a)]
Run Code Online (Sandbox Code Playgroud)

感谢afg的帮助

  • @Rajeev这是_both_问题的答案.`zip(*a)`是矩阵转置,它也是自己的逆转. (5认同)
  • @Rajeev所以你`map(列表,zip(*a))`或`[zip(*a)中行的列表(行)]`如果你_really_需要行是列表.通常你不这样做. (4认同)