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

本文详细探讨了Python中的数据类型,包括字符串、布尔、整数、浮点数、元组、日期、列表、字典和集合。重点解析了可变类型(如列表和字典)与不可变类型(如整数和元组)的区别,强调在更改值时内存地址的变化。不可变类型在值改变时会创建新内存,而可变类型则可在原地修改。对于不可变的字符串和元组,尝试修改单个元素会导致错误。同时,文章通过实例展示了如何操作这些数据类型。

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

python中数据类型(红色为可变类型)


1、字符串   str
2、布尔类型  bool
3、整数   int 
4、浮点数   float
5、元组   tuple
6、日期   date
7、列表    list
8、字典   dict
9、集合 set

可变类型和不可变类型的定义

这个定义是基于内存地址来说的

可变数据类型:变量引用的数据类型,在更改数值的时候,存在不开辟新内存的行为,此数据类型为可变数据类型。

不可变数据类型 :变量引用的数据类型,在更改数值的时候,不存在不开辟新内存的行为,此数据类型为不可变数据类型。

不可变类型

整数

整数数值改变,其内存地址也改变;数值相等,其内存地址也相同

num = 1
print(id(num))

num = num + 1
print(id(num))

example = 2
print(id(example))

结果: 

4440852832
4440852864
4440852864

浮点数

浮点数数值改变,其内存地址也改变;数值相等,其内存地址不相同,这个跟Python的内存管理机制有关,两个1.5的浮点数并非真正相等,可能存在极小的差别

num = 1.5
print(id(num))

num = num + 1
print(id(num))

example = 1.5
print(id(example))

结果:

140566113632304
140566113632624
140566113632656

字符串

字符串数值改变,其内存地址也改变;数值相等,其内存地址相同。

只能对字符串变量进行整体赋值而不能修改字符串中的元素值

string = 'abc'
print(id(string))

string = 'abcd'
print(id(string))

string2 = 'abcd'
print(id(string2))

string[1]='x'
结果:

140565997429424
140566128170928
140566128170928
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-ef487a10d5f3> in <module>
      8 print(id(string2))
      9 
---> 10 string[1]='x'

TypeError: 'str' object does not support item assignment

元组

元组数值改变,其内存地址也改变;数值相等,其内存地址不相同。

只能对元组变量进行整体赋值而不能修改字符串中的元素值,但当元素为可变类型(如list)除外(不能对其中的元素进行赋值,但可使用append等方法)

tup = ('a','b','c')
print(id(tup))

tup2 = ('a','b','c')
print(id(tup2))

tup = ('a','b','c','d')
print(id(tup))

tup[1] = 'w'

结果:

140566113650048
140566131537728
140566128174560
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-24-4265e7d750f8> in <module>
      8 print(id(tup))
      9 
---> 10 tup[1] = 'w'

TypeError: 'tuple' object does not support item assignment
tup = ('a',[1,2],'c')
tup[1].append(3)
tup

结果:

('a', [1, 2, 3], 'c')

可变类型

列表

可修改列表的元素值而内存不发生变化

list = ['a','b','c','d','e','f','g']
print(id(list))
list[1] = 'w'
print(id(list))
print(list)

结果:

1490101031496
1490101031496
['a', 'w', 'c', 'd', 'e', 'f', 'g']

字典

同列表,略

集合

同列表,略

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值