如何将列表列表与字符串列表组合

时间:2019-10-01 18:19:29

标签: python python-3.x list

我在下面有一个列表

a = [['1321.', 'Fuji', 'Kto', '776'], ['3123.', 'dake', 'Cu', '392'], ['123.', 'Hota', 'Cu', '310']]

我有两个字符串列表,想按顺序将它们附加到上面的列表中以形成一个新列表。

id = ['pid=1882','pid=1086','pid=180']

lgt = ['38.72347',
 '38.23833',
 '37.64986']

结果应该变成

new_list = [['1321.', 'Fuji', 'Kto', '776', 'pid=1882', '38.72347'], 
['3123.', 'dake', 'Cu', '392', 'pid=1086', '38.23833'], 
['123.', 'Hota', 'Cu', '310', 'pid=180', '37.64986']]

我尝试了zip方法,但是输出是一个元组而不是一个列表。

new_list = list(zip(a, id, lgt))

new_list -> [[['1321.', 'Fuji', 'Kto', '776'], 'pid=1882', '38.72347'], 
[['3123.', 'dake', 'Cu', '392'], 'pid=1086', '38.23833'], 
[['123.', 'Hota', 'Cu', '310'], 'pid=180', '37.64986']]]

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用zip,但之后需要打开列表元素。

a = [['1321.', 'Fuji', 'Kto', '776'], ['3123.', 'dake', 'Cu', '392'], ['123.', 'Hota', 'Cu', '310']]
ids = ['pid=1882', 'pid=1086', 'pid=180']
lgt = ['38.72347', '38.23833', '37.64986']

result = [[*x, y, z] for x, y, z in zip(a, ids, lgt)]
print(result)
# [['1321.', 'Fuji', 'Kto', '776', 'pid=1882', '38.72347'], ['3123.', 'dake', 'Cu', '392', 'pid=1086', '38.23833'], ['123.', 'Hota', 'Cu', '310', 'pid=180', '37.64986']]

答案 1 :(得分:2)

利用通过压缩三个列表生成的元组,您可以使用迭代器拆包将idslgt中的项目分配到一个列表中,以与a中的列表项目进行连接:< / p>

[s + r for s, *r in zip(a, ids, lgt)]

这将返回:

[['1321.', 'Fuji', 'Kto', '776', 'pid=1882', '38.72347'],
 ['3123.', 'dake', 'Cu', '392', 'pid=1086', '38.23833'],
 ['123.', 'Hota', 'Cu', '310', 'pid=180', '37.64986']]

答案 2 :(得分:1)

检查一下:

list = [['1321.', 'Fuji', 'Kto', '776'], ['3123.', 'dake', 'Cu', '392'], ['123.', 'Hota', 'Cu', '310']]
id = ['pid=1882','pid=1086','pid=180']
lgt = ['38.72347','38.23833','37.64986']

for index, value in enumerate(list):
    list[index].append(id[index])
    list[index].append(lgt[index])

答案 3 :(得分:1)

您可以使用以下解决方案:

[('1321.', 'Fuji', 'Kto', '776', 'pid=1882', '38.72347'),
 ('3123.', 'dake', 'Cu', '392', 'pid=1086', '38.23833'),
 ('123.', 'Hota', 'Cu', '310', 'pid=180', '37.64986')]

结果:

list(map(list, zip(*zip(*a), id, lgt)))

如果您需要列表列表:

{{1}}