python 清空列表时的陷阱

本文深入探讨了Python中列表赋值与清空两种操作的区别,通过实例展示了赋值操作与清空列表如何影响内存中的数据引用,以及这种影响带来的不同结果。

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

清空list列表有两种方法,1:重新赋值;2:调用del方法。在使用中这两种方法有差别,举个栗子:

#! /usr/bin/env python
#coding=utf-8
li = []
li_change = [1,2,3]
li.append(li_change)

li_change = [4,5,6]
li.append(li_change)

print li    #[[1, 2, 3], [4, 5, 6]]

在这种情况下,是第二次给列表li_change赋值,相当于建立一个列表,得到的结果如我们所愿。

现在修改代码,在第二次赋值之前先清空列表,会得到另外一种结果;

#! /usr/bin/env python
#coding=utf-8
li = []
li_change = [1,2,3]
li.append(li_change)

del li_change[:]

li_change = [4,5,6]
li.append(li_change)

print li    #[[], [4, 5, 6]]
结果是列表li中第一次进入的值为空,这说明列表里存储的是变量的地址,当变量清空时,会引起事先存储在列表中值的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值