将值从一个嵌套列表复制到另一个空嵌套列表

时间:2019-06-09 00:48:28

标签: python nested-lists

我想将一个嵌套列表中的值移动到另一个空嵌套列表中。更具体地说,当且仅当具有相同索引的嵌套列表为空时,我才想复制该值。

如果我有:

L = [[1], [2.718], [3.14], [4]]

M = [[], [2], [3], []]

我想返回:

M = [[1], [2], [3], [4]]

我知道我可以通过以下方式手动完成每个任务:

M[0].append(L[0][0])
M[3].append(L[3][0]) 

但是我想使用for循环来处理更大的列表。


我尝试做

for i in M:
    if bool(i)==False: 
        M[i].append(L[i][0])

但这给我最后一行“ TypeError:列表索引必须是整数,而不是列表”。关于如何修复for循环的任何想法?

4 个答案:

答案 0 :(得分:1)

您可以依次遍历列表,如下所示:

for l, m in zip(L, M):
    if len(m) == 0:
        m[:] = l[:]

最后的切片将确保您将对象复制到M的结果子列表中。

答案 1 :(得分:0)

这样做时:

for i in M:

i的值将始终是给定位置中数组的值。

您需要实际的索引,因此请在0到索引长度之间的范围内循环。

for i in range(0, len(M)):
    if len(M[i]) == 0:
        M[i] = L[i]

答案 2 :(得分:0)

ziplist-comprehension一起使用

[j if j else i for i,j in zip(L,M)]
#[[1], [2], [3], [4]]

答案 3 :(得分:0)

另一种方法是使用列表理解:

L = [[1], [2.718], [3.14], [4]]
M = [[], [2], [3], []]

M = [m if len(m)>0 else l for l, m in zip(L, M)]

print(M)

与上述相同...