python 浅拷贝和深拷贝 关于在循环中使用list.append(),插入数据被覆盖的问题

在Python编程中,当在循环中使用list.append()时,可能会遇到数据被覆盖的问题。例如,预期创建不同列表的列表,但实际所有列表都被相同数据覆盖。通过理解浅拷贝和深拷贝的概念,可以解决这个问题。解决方案包括使用浅拷贝的copy模块或深拷贝的deepcopy模块来避免引用同一内存地址导致的数据污染。
摘要由CSDN通过智能技术生成

 

关于Python中,循环后使用list.append(),数据被覆盖的问题

例子:

def make_list_of_lists(n):
    the_list = []
    sublist = []
    while n > 0:
        the_list.append(sublist)
        sublist.append(len(sublist) + 1)
        n = n - 1
    return the_list

测试用例:

print(make_list_of_lists(0))
print(make_list_of_lists(1)) 
print(make_list_of_lists(5))

期望输出结果:

[]

[[]]

[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]]

实际输出结果:
[]
[[1]]
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]

解决方案:

1.浅拷贝

def make_list_of_lists(n):
    the_list = []
    sublist = []
    while n > 0:
        ptable= sublist[:]
        the_list.append(ptable)
        sublist.append(l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值