列出python中可变数据类型和不可变数据类型,python可变数据和不可变数据
本文主要介绍对python数据类型可变性和不变性的深入分析。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010 1.可变和不可变类型的特征1。不可变数据类型2。可变数据类型2。哪些是可变类型,哪些是不可变类型
目录
一.可变类型与不可变类型的特点
当一个不可变的数据类型第一次被声明时,它会在内存中打开一个空间来存储这个变量的赋值。这个变量实际存储的不是赋值,而是存储这个值的空间的内存地址。通过这个地址,变量可以从内存中获取数据。所谓不可变,就是我们不能改变这个数据在内存中的值。因此,当我们改变这个变量的赋值时,我们只是在内存中开辟了一个新的空间,并将这个新的数据存储在这个新的内存地址中,而原始变量不会引用原始数据的内存地址,而是引用新数据的内存地址。
示例:
x=18
id(x)
4497811200
id(18)
4497811200
x=19
id(x)
4497811232
id(18)
4497811200
y=18
id(y)
4497811200
首先,x=18,打开一个地址为4497811200的内存,也就是18对应的地址是4497811200。后来x=19,重新打开一个地址为4497811232的内存来存储19。可以看出,不变是指18和19在内存中的地址不会改变。当18赋给Y时,Y指向的地址是444。
1.不可变数据类型
结合不可变数据类型,可变数据类型很好理解。变量数据类型意味着变量所指向的内存地址的值是可以改变的。
x=[1,2,3]
id(x)
4501838920
y=[1,2,3]
z=[1,2,3]
id(y)
4501838600
id(z)
4501838664
换个角度看:
类型:当该数据类型对应的变量的值发生变化时,其对应的内存地址也会发生变化。对于这种数据类型,称为不可变数据类型。
变量数据类型:当其对应变量的值发生变化时,其对应的内存地址不变。对于这种数据类型,称为可变数据类型。
#a的值变了,a对应的内存地址也变了。
a=1
id(a)
4497810656
a=2
身份证(2)
4497810688
#直接在A上操作相当于复制A的值,在其他内存地址上操作会保持A的值不变。
a 1
三
id(a)
4497810688
一
注射毒品
#b的值改变了,b对应的内存地址保持不变。第一次给B赋值时,B被划分为一个内存空间,空间保持不变。
b=[1,2,3]
身份证(b)
4501839496
#直接在B上操作,B的值变了,B指向的内存空间不变。
b .追加(4)
身份证(b)
4501839496
乙等
[1, 2, 3, 4]
2.可变数据类型
不可变:数(number),字符串(String),元组(Tuple)。
#整数
a=1
打印(id(a),类型(a))
a=2
打印(id(a),类型(a))
# 4361254304类“int”
# 4361254336 class int
#字符串
b=安妮
打印(id(b),类型(b))
b=anne1995
打印(id(b),类型(b))
# 4363638744类“str”
# 4363684784类“str”
#元组
c1=[1 , 2]
c=(1,2,c1)
print(c,id(c),type(c))
c1[1]=djx
print(c,id(c),type(c))
# (1,2,[1 , 2]) 4363948248类“元组”
# (1,2,[1 , djx]) 4363948248类元组
可以变:(集),列表(单),字典(词典)。
#设置
s={1, d , 34 , 1 ,1}
打印、类型、id
s.add(djx )
打印、类型、id
# {1, 1 , d , 34} class set 4401385256
# {1, 1 , 34 , d , djx} class set 4401385256
#列表
list=[1, q , qwer ,True]
打印(列表,类型(列表),id(列表))
list.append(djx )
打印(列表,类型(列表),id(列表))
# [1, q , qwer ,True] class list 4401113608
# [1, q , qwer ,True, djx] class list 4401113608
#字典
元组=(1)
dic={1:2}
d={ tuple:1, key2:djx , key3:li}
print(d,type(d),id(d))
d[key4]=哈哈
print(d,type(d),id(d))
# {1: 1, key2: djx , key 3 : Li } class dict 4401075976
# {1: 1, key2: djx , key3: 李, key4: 哈哈 } class dict 4401075976
注意:此时,tuple的值已经改变,而内存地址没有改变,但我们仍然称tuple为不可变类型。为什么?其实改变的是元组中的列表。列表是变量类型,值改变后地址保持不变。但是元组的定义是不可变的,
元组称为只读列表,即数据可以查询但不能修改。
以上是深入分析python的可变和不可变数据类型的详细内容。关于python的可变和不可变数据类型的更多信息,请关注流行的IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。