Python数据类型:
数字型:
整型.
浮点型.
布尔型.
Python的数字类型有int整型、long长整型、float浮点数、complex复数、以及布尔值(0和1),这里只针对int整型进行介绍学习
字符型:
字符串是Python中最常用的数据类型,其用途也很多,我们可以使用单引号 ‘’或者双引号“”来创建字符串
容器型数据类型:
列表: 是由一系列特定元素顺序排列的元素组成的,它的元素可以是任何数据类型即数字、字符串、列表、元组、字典、布尔值等等,同时其元素也是可修改的
字典: 字典为一系列的键-值对,每个键值对用逗号隔开,每个键都与一个值相对应,可以通过使用键来访问对应的值。无序的
集合: 在我看来集合就像一个篮子,你可以往里面存东西也可往里面取东西,但是这些东西又是无序的,你很难指定单独去取某一样东西;同时它又可以通过一定的方法筛选去获得你需要的那部分东西,故集合可以 创建、增、删、关系运算
集合特征:去重,无序,每个元素必须为不可变类型即(hashable类型,可作为字典的key)
元组: 元组即为不可修改的列表,其于特性跟list相似,其使用圆括号而不是方括号来标识
Number(数字):表示数据组成为数字
String(字符串):表示数据组成是字符
List(列表): 用来表示一组有序元素,后期数据可以修改
Tuple(元组):用来表示一组有序元素,后期数据不可修改
Sets(集合):一组数据无序不重复元素
Dictionary(字典):用键值对的形式保存一组元素
整数型:a = 10 浮点型:a = 1.0 字符型:name = '张先生' 元组: t1 = tuple ()(声明一个空元组)
b = -20 b = 3.1415926 age = 20 t1 = ()
c = 0 c = -0.22 sex = 男
集合:s1 = set() <class 'set'> (声明一个集合) 字典:dict = {}(声明一个空字典)
s1 ={"a"} <class 'set'> d1 = dict()
set.add() #集合中添加数据 dict.get() #根据key值获取对应的值
set.pop() #随机删除集合中的一个数据 dict.pop() #根据key值删除一个键值对
set.remove() #删除集合中的一个具体数据 dict.items() #获取所有值值键对
set.discard() #删除集合中的一个具体数据 dict.values() #获取所有值
set.clear() #清空集合
列表:list() (声明一个空列表)
a = [1,2,3,4,5]
增加操作 :list.append() #在末尾增加一个数据
list.extend() #添加一组数据,例添加一个列表到另外一个列表
删除操作: list.pop(0) #弹出某一个位置的数据
list.remove() #删除列表中的某一个数据,需要知道名称
del list[2] #删除某一位置的数据
修改操作: list.sort() #可以对列表数据进行排序
list.reverse() #可以是列表中的数据进行翻转
查询操作: list.count() #可以查询某一列表中数据出现的次数
list.index() #可以返回列表的索引值
其他操作: max(list) #求列表最大值
min(list) #求列表最小值
len(list) #返回列表数据个数
python内置对象
3.可变、不可变数据类型和hash
(1)可变数据类型和不可变数据类型
python中的数据类型可以分为可变数据类型和不可变数据类型
可变数据类型: 列表、字典、集合(set)
不可变数据类型: 数字、字符串、元组
从内存角度看列表和数字的变与不变:
1 >>> l = [1, 2, 3, 4] 2 >>> id(l) 3 84221264 4 >>> l[1] = 1.5 5 >>> id(l) 6 84221264 7 >>> l 8 [1, 1.5, 3, 4] 9 >>> print("列表是可变数据类型") 10 列表是可变数据类型 11 >>> a = 1 12 >>> id(a) 13 494523440 14 >>> a = 3 15 >>> a 16 3 17 >>> id(a) 18 494523472 19 >>> print("数字是不可变类型") 20 数字是不可变类型
列表中某项赋新值之后id值未变,在内存上还是原来的列表,所以说列表是可变类型,而数字赋新值后id发生了改变说明数字是不可变类型
字符串是不可变类型
1 >>> s = 'hello' 2 >>> s[1] = 'a' 3 Traceback (most recent call last): 4 File "<stdin>", line 1, in <module> 5 TypeError: 'str' object does not support item assignment 6 >>> s = 'hello' 7 >>> id(s) 8 58865760 9 >>> s += 'python' 10 >>> s 11 'hellopython' 12 >>> id(s) 13 58886128
字符串可以向列表一样使用索引操作,但是不能像修改列表一样来修改字符串的值,当我们对字符串进行拼接时,原理和整数一样,id值已经发生了改变,
相当于变成了另一个字符串,所以说字符串也是一个不可变类型
元组-不允许修改值,也是不可变类型
1 >>> t = (1, 2, 3, 4) 2 >>> t[1] = 1.5 3 Traceback (most recent call last): 4 File "<stdin>", line 1, in <module> 5 TypeError: 'tuple' object does not support item assignment
(2)hash
hash的定义: Hash,一般翻译做“散列”,是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数
特征: hash值的计算过程是依据值的特征来计算,这就要求被hash的值必须固定,也就是说被hash的值必须是不可变的
注: 可变类型不可hash,不可变类型可hash
应用: 文件签名、MD5加密、密码验证
1 >>> hash("你猜我是谁") 2 1186796725 3 >>> hash("wyb") 4 1957863783 5 >>> hash((1,2,3)) 6 -378539185