簡體   English   中英

如何在python中組合2d列表元素-考慮順序

[英]How to combine 2d lists elements in python - Taking order in consideration

我在Python中有一個腳本,它將解析文件中的某些值,並將其存儲在如下所示的2d列表中:

[['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中搜索了此類問題,但找不到任何問題。

任何幫助將不勝感激。

謝謝

讓我們定義您的列表:

>>> 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'])]

正如您在出色答案中已經提到的那樣,請使用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']]]

這是一個列表列表,而不是元組列表(如問題所示)。

如果您需要對元素進行的所有操作都是遍歷它們並從中讀取,則沒有實際的區別。 另一方面,如果您需要更改元素並“就地”更改它們,則列表可以使您做到這一點(它們是可變的),而元組則不需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM