基本数据类型可变与否总结
基本数据类型:
- 数字、字符串、元组、布尔、列表、字典、集合
列表的变:
- 列表元素的个数可以增加、也可以删除
- 列表中的指定元素,你也可以随意修改其内容
字典的变:
- 字典的元素是键值对
- 键值对的个数可以再增加,也可以删除不要
- 键是一旦定义不可以修改,不想要的时候必须连同值一块删除
- 值是可以任意修改的
集合的变:
- 集合可以新增元素也可以删除元素
- 集合内的元素一旦定义,不能修改,只能删除后新增需要的
元组的变与不变:
- 元组一旦定义,元素个数不能再删除或新增
- 元素内的元素:对于可变类型可以修改(如list),对于不可变类型不能修改(如 int)
字符串的不变:
- 字符串一旦定义,不可修改
- 任何的修改都是新增一个变量
数字的不变:
- 数字类型不可变,说1不2
布尔:
- 不可变,要么0,要么1
变与不变的另一个判断方法:hash()
- 可被hash的不可变
- 不能被hash的可变
列表:可变
>>> a = [1,2,3,4]
>>> hash(a)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
hash(a)
TypeError: unhashable type: 'list'
字典:可变
>>> a = {"name":"jack","age":18}
>>> hash(a)
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
hash(a)
TypeError: unhashable type: 'dict'
集合:可变
>>> a = {1,2,3,4}
>>> hash(a)
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
hash(a)
TypeError: unhashable type: 'set'
字符串:不可变
>>> a = "jack"
>>> hash(a)
6739665373260742146
数字:不可变
>>> a = 2019
>>> hash(a)
2019
布尔:不可变
>>> a = True
>>> hash(a)
1
元组:比较特殊!
- 元素都是不可变数据类型,可hash
>>> a=(1,2,3,'jack')
>>> hash(a)
-3041190636402635813
- 元素存在不可变的数据类型,不可hash
>>> a = (1,2,3,"jack",["jack"],5)
>>> hash(a)
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
hash(a)
TypeError: unhashable type: 'list'
总结:
- 列表、字典、集合是可变的,不可hash
- 字符串、数字、布尔是不可变的,可hash
- 元组一般不可变,即不可以修改器元素;但若其元素是可变数据类型,则该元素可以被修改