【问题标题】:Transpose nested list in python在python中转置嵌​​套列表
【发布时间】:2014-02-22 00:55:32
【问题描述】:

我喜欢将此列表中的每个项目移动到另一个嵌套列表中,有人可以帮我吗?

a = [['AAA', '1', '1', '10', '92'], ['BBB', '262', '56', '238', '142'], ['CCC', '86', '84', '149', '30'], ['DDD', '48', '362', '205', '237'], ['EEE', '8', '33', '96', '336'], ['FFF', '39', '82', '89', '140'], ['GGG', '170', '296', '223', '210'], ['HHH', '16', '40', '65', '50'], ['III', '4', '3', '5', '2']]

最后我会这样列出:

[['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF'.....],
['1', '262', '86', '48', '8', '39', ...],
['1', '56', '84', '362', '33', '82', ...],
['10', '238', '149', '205', '96', '89', ...],
...
...]

【问题讨论】:

标签: python list


【解决方案1】:

zip*map 一起使用:

>>> map(list, zip(*a))
[['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF', 'GGG', 'HHH', 'III'],
 ['1', '262', '86', '48', '8', '39', '170', '16', '4'],
 ['1', '56', '84', '362', '33', '82', '296', '40', '3'],
 ['10', '238', '149', '205', '96', '89', '223', '65', '5'],
 ['92', '142', '30', '237', '336', '140', '210', '50', '2']]

请注意,map 在 Python 3 中返回一个地图对象,因此您需要 list(map(list, zip(*a)))

list comprehensionzip(*...) 一起使用,这在Python 2 和3 中都可以正常工作。

[list(x) for x in zip(*a)]

NumPy 方式:

>>> import numpy as np
>>> np.array(a).T.tolist()
[['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF', 'GGG', 'HHH', 'III'],
 ['1', '262', '86', '48', '8', '39', '170', '16', '4'],
 ['1', '56', '84', '362', '33', '82', '296', '40', '3'],
 ['10', '238', '149', '205', '96', '89', '223', '65', '5'],
 ['92', '142', '30', '237', '336', '140', '210', '50', '2']]

【讨论】:

  • 哇,这很简单,谢谢。我试过 make for 循环,但这是很好的解决方案
【解决方案2】:

通过列表理解:

[[x[i] for x in mylist] for i in range(len(mylist[0]))]

【讨论】:

  • @nietonfir 你错了。这是一个答案。要批评或要求澄清,您可以投反对票或发表评论。
【解决方案3】:

你也可以这样做:

row1 = [1,2,3]
row2 = [4,5,6]
row3 = [7,8,9]

matrix = [row1, row2, row3]
trmatrix = [[row[0] for row in matrix],[row[1] for row in matrix],  [row[2] for row in matrix]]

【讨论】:

    【解决方案4】:

    你也可以使用

    a= np.array(a).transpose().tolist()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 2013-11-26
      相关资源
      最近更新 更多