我一直在努力解决这个问题几个小时,我似乎无法达成解决方案。 所以我在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的第一个列表中追加第一个元素,依此类推,并保留列表结构列表。
答案 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)))