【编程】listA.clear() 相遇 list.append()

本文探讨了Python中list.clear()和list.append()方法在实际应用中的一个有趣现象。通过示例代码展示了当在循环中使用这两种方法时,列表元素更新的非预期行为,并给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

在 python 的官方文档中,list.clear() 意为删除该列表中的所有元素,list.append() 意为在该列表末尾添加元素,两者(接口定义如下图)相遇就会有一些奇怪的事情,其中的具体原因尚未搞清楚,仅以本篇博文作为记录。
在这里插入图片描述

示例

举个例子,计划在名叫 num_listList 中存储一些数据,如下图:

indexcontent
0[0, 1, 2, 3, 4]
1[1, 2, 3, 4]
2[2, 3, 4]

使用 listA 构造每个 index 下的内容,然后通过 num_list.append() 添加到 num_list() 中,每次迭代前使用 listA.clear() 清空原有的 listA 中的数据,代码如下:

num_list = list()
listA = list()
print("listA.clear() -------")
for index in range(0, 3):
    listA.clear()
    for item in range(index, 5):
        listA.append(item)
    num_list.append(listA)
    print("after index {},num_list is:{}".format(index, num_list))

运行结果如下:
在这里插入图片描述
怎么和预期的不一样啊,通过每次迭代时 num_list 内容的变化,发现 listA 的每次变化都会使 num_list 中所有内容变化,感觉是 listA.clear() 清空不彻底,于是仅修改上述代码中第5行,如下:

num_list = list()
listA = list()
print("listA = [] -------")
for index in range(0, 3):
    listA = []
    for item in range(index, 5):
        listA.append(item)
    num_list.append(listA)
    print("after index {},num_list is:{}".format(index, num_list))

运行结果如下:
在这里插入图片描述
好嘛,这才是我想要的结果,但是为什么呢?clear() 后为什么通过 list.append() 添加的对象元素都会被更新呢?

总结

To be continue …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值