关于python list的‘=‘号指针问题

本文深入探讨Python中列表的'='号指针问题,解释为何列表a的变化会影响b,以及如何通过list(), set()和.copy()方法创建独立的列表副本,避免此问题。适合Python初学者理解列表拷贝机制。

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

关于python list的’='号指针问题

a = [‘1’,‘2’,‘3’]
b = a
print(a)
print(b)

[‘1’, ‘2’, ‘3’]
[‘1’, ‘2’, ‘3’]
那么当a发生改变时,b的值会发生改变吗?
答案:会!
a[0] = ‘0’
print(a)
print(b)

[‘0’, ‘2’, ‘3’]
[‘0’, ‘2’, ‘3’]
为什么呢?
这里涉及到一个原理,python的=号只是将指针指向某个值,并非将a值赋值给b值,或者创建b值。

如何更改这种指针从而变成创建新的值呢?
方法有两种,以下为示范:

方法1 使用list方法创建
a = [‘1’,‘2’,‘3’]
b = list(a)
a[0] = ‘0’
print(a)
print(b)

[‘0’, ‘2’, ‘3’]
[‘1’, ‘2’, ‘3’]
方法2 使用set方法创建(同时set方法有去除列表中重复值的功能)
a = [‘1’,‘2’,‘3’]
b = set(a)
a[0] = ‘0’
print(a)
print(b)
a = [‘1’,‘2’,‘3’,‘3’]
b = set(a)
a[0] = ‘0’
print(a)
print(b)

[‘0’, ‘2’, ‘3’]
{‘1’, ‘3’, ‘2’}
[‘0’, ‘2’, ‘3’, ‘3’]
{‘1’, ‘3’, ‘2’}

但是这里b的类型不是list
print(type(b))
set

可以通过list方法将其转为list类型
b = list(b)
print(b)
print(type(b))

[‘1’, ‘3’, ‘2’]
<class ‘list’>

所以其实set的方法和list方法可以归为一类
方法2 使用.copy()方法创建
a = [‘1’,‘2’,‘3’]
b = a.copy()
a[0] = ‘0’
print(a)
print(b)
a = [‘1’,‘2’,‘3’,‘3’]
a[0] = ‘0’
print(a)
print(b)

[‘0’, ‘2’, ‘3’]
[‘1’, ‘2’, ‘3’]
[‘0’, ‘2’, ‘3’, ‘3’]
[‘1’, ‘2’, ‘3’]

你学会了吗?快动手解决遇到的问题吧!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值