我有一个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']]]
,它是列表的列表,而不是元组的列表(如问题所示)。
如果对元素所需要做的只是遍历它们并从中读取,则没有实际的区别。另一方面,如果您需要更改元素并"就地"更改它们,列表允许您这样做(它们是可变的),而元组则不能。