可变数据类型和不可变数据类型

文章探讨了Python中的数据类型,特别是可变和不可变的区别。通过示例展示了列表(list)、元组(tuple)、字典(dict)和集合(set)在修改后内存地址是否变化,说明了元组的不可变性以及列表、字典和集合作为可变数据类型的特性。此外,提到了字典的键必须是不可变类型这一要点。

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

当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址不发生改变,那么这个数据类型就是可变数据类型。反之,则是不可变的数据类型。

  • 直接记住可变数据类型:list set dict
  • 比较特殊的是元组tuple,它是不可变的数据类型

验证如下:

首先对list dict tuple set进行定义

a=1
b=2
c=[a,b]
id_c=id(c)
print('列表地址:',id_c,' ',type(c))

d=(a,b)
id_d=id(d)
print('元组地址:',id_d,' ',type(d))

e={a:b}
id_e=id(e)
print('字典地址:',id_e,' ',type(e))

f={a,b}
id_f=id(f)
print('集合地址:',id_f,' ',type(f))

其结果如下:

列表地址: 1942788588800   <class 'list'>
元组地址: 1942790705344   <class 'tuple'>
字典地址: 1942788587776   <class 'dict'>
集合地址: 1942789774848   <class 'set'>

列表

我们可以对于列表c进行增删操作,操作后结果如下:

c.append(d)
print(c)
print('列表地址是否改变:',id(c)!=id_c)
[1, 2, (1, 2)]
列表地址是否改变: False

可以看到,列表内元素增加后,列表的地址并没有改变。

元组

元组是不可变的数据类型,原则上不能改变其内部元素,除非其内部元素是列表等。

d2=d+(1,2)
print(d2)
print('元组地址是否改变',id(d2)!=id_d)
(1, 2, 1, 2)
元组地址是否改变 True

当内部元素使可变数据类型的情况,以列表为例。改变列表的元素,元组数据的地址不变。

list_1=[1,2]
tuple_1=(1,2,list_1)
print(tuple_1,' ',id(tuple_1))
list_1.pop()
print(tuple_1,' ',id(tuple_1))
(1, 2, [1, 2])   1751706599808
(1, 2, [1])   1751706599808

字典

需要注意的是:字典的key不能是可变数据类型

e[2]=3 #增加字典的元素
print(e)
print('字典地址是否改变',id(e)!=id_e)
{1: 2, 2: 3}
字典地址是否改变 False

集合

集合中不会有重复的元素出现。

f.add(3)
print(f)
print('集合地址是否改变',id(f)!=id_f)
{1, 2, 3}
集合地址是否改变 False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值