【问题标题】:How to combine 2d lists elements in python - Taking order in consideration如何在python中组合二维列表元素-考虑顺序
【发布时间】:2015-08-10 21:20:11
【问题描述】:

我在 Python 中有一个脚本,它将解析文件中的一些值并将其存储在一个二维列表中,如下所示:

[['x'], ['Y'], ['Z']]

[['99'], ['88'], ['77']]

[['host1'], ['host2'], ['host3']]

[['a', 'b', 'c','d','e'], ['f, 'g', 'h','i','j'], ['k', 'l', 'm','n','o']]

我想要实现的只是使用以下顺序将这些列表组合成一个大列表

[[['X'],['99'],['host1'], ['a','b','c','d','e']], [['Y'], ['88'], ['host2'], ['f','g','h','i',j]]] etc .. 

我已经在 stackoverflow 中搜索过此类问题,但找不到任何问题。

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: python list multidimensional-array


    【解决方案1】:

    让我们定义您的列表:

    >>> a = [['x'], ['Y'], ['Z']]
    >>> b = [['99'], ['88'], ['77']]
    >>> c = [['host1'], ['host2'], ['host3']]
    >>> d = [['a', 'b', 'c','d','e'], ['f', 'g', 'h','i','j'], ['k', 'l', 'm','n','o']]
    

    我相信这可以满足您的要求:

    >>> zip(a, b, c, d)
    [(['x'], ['99'], ['host1'], ['a', 'b', 'c', 'd', 'e']), (['Y'], ['88'], ['host2'], ['f', 'g', 'h', 'i', 'j']), (['Z'], ['77'], ['host3'], ['k', 'l', 'm', 'n', 'o'])]
    

    【讨论】:

    • @Pynchia 用列表而不是元组来回答也很好
    • 很简单,只需将元组转换为列表即可:z=[list(el) for el in zip(a,b,c,d)]
    【解决方案2】:

    正如您在得到的出色答案中已经提到的,请使用zip

    a=[['x'], ['Y'], ['Z']]
    b=[['99'], ['88'], ['77']]
    c=[['host1'], ['host2'], ['host3']]
    d=[['a', 'b', 'c','d','e'], ['f', 'g', 'h','i','j'], ['k', 'l', 'm','n','o']]
    
    z=[list(el) for el in zip(a,b,c,d)]
    print z
    

    生产

    [[['x'], ['99'], ['host1'], ['a', 'b', 'c', 'd', 'e']], [['Y'], ['88'], ['host2'], ['f', 'g', 'h', 'i', 'j']], [['Z'], ['77'], ['host3'], ['k', 'l', 'm', 'n', 'o']]]
    

    这是一个列表列表,而不是元组列表(如问题所示)。

    如果您需要对元素做的所有事情就是迭代它们并从中读取,那么实际上并没有什么区别。 另一方面,如果您需要更改元素并“就地”更改它们,列表允许您这样做(它们是可变的),而元组则不能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多