将一个嵌套列表中的值复制到另一个空的嵌套列表中
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]
将 zip
与 list-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)
同上思路...
我想将一个嵌套列表中的值移动到另一个空的嵌套列表中。更具体地说,当且仅当具有相同索引的嵌套列表为空时,我想复制该值。
如果我有:
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]
将 zip
与 list-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)
同上思路...