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

Copy values from one nested list into another empty nested list

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

如果我有:

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

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

我想return:

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: list indices must be integers, not list"。关于如何修复 for 循环的任何想法?

您可以像这样串联迭代列表:

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

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

做的时候:

for i in M:

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

您需要实际的索引,因此遍历从 0 到索引长度的范围。

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

ziplist-comprehension

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

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

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)

同上思路...