python学习笔记35:集合类型基本概念,可变类型与不可变类型
(2020-10-09 12:12:52)
标签:
python集合基本概念可变类型不可变类型 |
分类: 计算机 |
python还有一种数据类型叫做集合,集合是无序的、不重复的数据集合,它本身是可变的,但里面的元素是不可变类型(这里要注意,即使是含有列表的元组也不可以,必须是完全不可变类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型)。Python的每个对象都分为可变和不可变,主要的核心类型中,数字、字符串、元组是不可变的,列表、字典是可变的。对不可变类型操作时,实际上是创建了一个新的对象。比如整型变量i是不可变类型:
i=8
print(id(i))
i+=1
print(id(i))
运行结果是
1973181180432
1973181180464
说明定义i的时候,分配的地址是
1973181180432,而对i进行操作之后,i的地址变成了1973181180464,相当于重新你创建了i
对于整型这种不可变类型,无论创建了多少个,只要值相同,那么地址就相同,比如上面的程序增加
j=9
print(id(j))
j变量的数值和i相同,运行后,地址也是1973181180464
测试一下实数类型,以下代码
i=12.34
print(id(i))
i+=10
print("i=",i)
print(id(i))
j=12.34+10
print(id(j))
运行结果是
2137136999952
i= 22.34
2137136293072
2137137746320
可见实数类型即使数值一样,地址也不一样。
再使用下面的代码测试一下字符串
2921362751536
2921362751536
值相同的字符串变量,地址相同。
对可变类型中的列表类型做一个测试
i=[9,8,7,6]
print(id(i))
i.append(5)
print(i)
print(id(i))
j=[9,8,7,6,5]
print(id(j))
运行结果为
3268743368576
[9, 8, 7, 6, 5]
3268743368576
3268776214272
说明列表类型数值变化后,地址不变,如果另一个列表类型数值相同,地址是不一样的。
如果增加两句代码
k=i
print(id(k))
运行可以看到k的地址和i一致。
从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {}
中,相邻元素之间用“,”分隔,比如
{1,2,3,4,5}
集合的元数个数没有限制。