结合两个列表python中的每个元素

时间:2018-05-04 17:26:33

标签: python list

我一直在努力解决这个问题几个小时,我似乎无法达成解决方案。 所以我在python中有两个列表列表:

list1=[['= 0\n', '= 1\n', '= 2\n', '= 3\n', '= 4\n'],['= 0\n', '= 1\n', '= 2\n']]
list2=[['a', 'b', 'c', 'd', 'e'],['a', 'b', 'c']]

我希望将这两个列表列表组合成:

[['a=0\n', 'b=1\n', 'c=2\n', 'd=3\n', 'e=4\n'], ['a=0\n', 'b=1\n', 'c=2\n']]

基本上,我想从list1的第一个列表中取出每个元素,并在list2的第一个列表中追加第一个元素,依此类推,并保留列表结构列表。

3 个答案:

答案 0 :(得分:2)

使用列表理解与zip进行配对:

list1 = [['= 0\n', '= 1\n', '= 2\n', '= 3\n', '= 4\n'], ['= 0\n', '= 1\n', '= 2\n']]
list2 = [['a', 'b', 'c', 'd', 'e'], ['a', 'b', 'c']]

print([[(x+y) for x, y in zip(list2[i], list1[i])] for i in range(len(list1))])
# [['a= 0\n', 'b= 1\n', 'c= 2\n', 'd= 3\n', 'e= 4\n'], ['a= 0\n', 'b= 1\n', 'c= 2\n']]                                  

答案 1 :(得分:1)

您可以先将select cn.name as country_name, st.name as state_name, ct.name as city_name, c.citizens from ( select city_id, count(*) as citizens from citizen where age > 50 group by city_id ) c left join city ct on ct.id = c.city_id left join state st on st.id = ct.state_id left join country cn on cn.id = st.country_id; 外部列表放在一起,然后zip元素并将它们连接成一个字符串。

zip

答案 2 :(得分:0)

使用map的先前答案的变体:

list(map(lambda x: list(map(''.join, zip(*x))), zip(list2, list1)))