我有一个小循环,循环一些数字,然后循环一个列表。如果第一个循环中的数字在循环中,则会将其删除。然而,我注意到这个ie被从列表列表中删除,而不是从withe循环中删除。下面的代码
num_list = [[1,2,3,4,5], [1,2,3,4,5]]
for num in [1,2,3,4,5]:
for pimp in num_list:
if num in pimp:
pimp.remove(num)
print(pimp)
但是,它在以下代码中工作正常:
for num in [1,2,3,4,5]:
for pimp in [[1,2,3,4,5], [1,2,3,4,5]]:
if num in pimp:
pimp.remove(num)
print(pimp)
有什么区别?我错过了什么
当前,当您执行
for pimp in num_list
操作时,您正在迭代对原始列表的引用num_list
。所以您在pimp
中所做的更改会反映在原始嵌套的num_list
中。为了避免这种情况,您需要在for循环中创建num_list
的深度副本。这可以使用deepcopy
来完成,它创建一个包含所有子列表的嵌套列表的副本相关问题 更多 >
编程相关推荐