我对python的数据结构技巧有点新,而且我一直在努力解决一个简单的问题。
我有2个2d列表
L1=[[1, '', 3],[1, '', 3]...]
L2=[['',2,''],['',2,''].....]
我正在寻找一种合并两个列表的简单方法,以便结果是表单中新的2d列表:
result=[[1,2,3],[1,2,3]....]
我试过
newestlist=[sum(x,[]) for x in zip(mylist, mylist2)]
但它会产生结果
badresult=[[1,'',3,'',2,'']....]
有没有办法实现这个目标?
答案 0 :(得分:3)
如果任何数字为0,则不起作用:
>>> [[x or y or 0 for x, y in zip(a, b)] for a, b in zip(L1, L2)]
[[1, 2, 3], [1, 2, 3]]
编辑:为了清晰起见,将理解分解为for循环:
output = []
for a, b in zip(L1, L2):
innerlist = []
for x, y in zip(a, b):
innerlist.append(x or y or 0) # 1 or '' = 1; '' or 2 = 2; etc
output.append(innerlist)
答案 1 :(得分:1)
你可以尝试:
newestlist = [[a if a != "" else b for a, b in zip(l1, l2)]
for l1, l2 in zip(L1, L2)]
这给了我你想要的输出:
[[1, 2, 3], [1, 2, 3]]