合并两个列表,删除空字符串

时间:2014-02-02 00:05:00

标签: python list

我对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,'']....]

有没有办法实现这个目标?

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]]