(一) Number数字类型
整数类型(int)
int 整型(正整数 0 分整数) type 获取一个值的类型 #案例1:正整数 int_var1 = 1 #正整数 print(int_var1,type(int_var1)) #案例2:定义变量为0的整数 int_var2 = 0 #0 print(int_var2,type(int_var2)) #案例3:负整数 int_var3 = (-1) #负整数 print(int_var3,type(int_var3))
浮点数类型(float)
float:正浮点数 负浮点数 #案例1:正浮点数 float_var1 = 1.2 #正浮点整数 print(float_var1,type(float_var1)) #案例2:负浮点数 float_var2 = (-1.3) #负浮点数 print(float_var2,type(float_var2))
布尔类型(bool)
bool: 真(True) 假(False) #案例1:真(True) a = 10 b = 5 res = a > b print(res,type(res)) #运行结果返回:True <class 'bool'> #案例2:假(False) a = 10 b = 5 res = b > a print(res,type(res)) #运行结果为:False <class 'bool'>
复数类型(comolex)
复数(complex): 实数 + 虚数 例:4 + 3j 4是实数 3j是虚数 #案例1: complex_var = 3-2j print(complex_var) print(type(complex_var)) #运行结果: (3-2j) <class 'complex'> #案例2:complex(实数,虚数) complex_var = complex(3,-2) print(complex_var) print(type(complex_var)) #运行结果: (3-2j) <class 'complex'> #案例3:只有虚数,没有实数 comple_var = 4j print(comple_var) print(type(comple_var)) #运行结果: 4j <class 'complex'>
(二) 容器类型分类:
字符串(str):
- 字符串的概念:用引号(""或'')引起来的就是字符串.
- len 获取容器类型数据的长度,元素的总个数
(1)单引号字符串
str_var = '51自学Python' print(str_var,type(str_var)) #运行结果: 51自学Python <class 'str'>
(2)双引号字符串
str_var1 = "文能提笔安天下,武能上马定乾坤." print(str_var1,type(str_var1)) #运行结果: 文能提笔安天下,武能上马定乾坤. <class 'str'>
(3)三引号字符串(支持跨行操作)
msg = """ 文能提笔安天下, 武能上马定乾坤. """ print(msg,type(msg)) #运行结果: 文能提笔安天下, 武能上马定乾坤. <class 'str'>
(4)元字符串r"字符串"不转义字符,原型化输出字符串
str_var = r"E:\文档\2019年python全栈" print(str_var) #运行结果: E:\文档\python全栈
(5)字符串,可获取,不可修改,有序
#正向索引 0 1 2 3 4 5 6 7 8 9 str_var = "黑夜给我了黑色的眼睛" #反向索引-10-9-8-7-6-5-4-3-2-1 #案例1: res = str_var[1]#正向索引 print(res) #运行结果: 夜 #案例2: res = str_var[-2]#反向索引 print(res) #运行结果: 眼
列表类型(list):列表可获取,可修改,有序.
(1)定义空列表
list_var = [] print(list_var,type(list_var)) #运行结果: [] <class 'list'>
(2)索引取值
# 1.获取列表里面的值 # 0 1 2 3 4 5 6 7 list_var = [11,22,33,44,55,66,"aa","bb"] res = list_var[1]#正向取值 print(res) #运行结果: 22 # 获取最后一个值 (python特有) res => result list_var = [11,22,33,44,55,66,"aa","bb"] # -8 -7 -6 -5 -4 -3 -2 -1 res = list_var[-1]#逆向索引 print(res) #运行结果: bb
(3)修改列表里面的值
list_var = [11,22,33,44,55,66,"aa","bb"] list_var[-1] = 88 print(list_var) #运行结果: [11, 22, 33, 44, 55, 66, 'aa', 88]
元组类型(tuple):可获取,不可修改,有序
(1)定义一个空元组
tuple_var = () print(tuple_var,type(tuple_var)) #运行结果: () <class 'tuple'>
(2)逗号是元组的标志性符号,如果想要表达空元组,可以用();
tuple_var = (1,) print(tuple_var,type(tuple_var)) #运行结果: (1,) <class 'tuple'>
(3)索引获取元组里面的值
# 0 1 2 3 tuple_var = ("aa","bb","cc","dd") # -4 -3 -2 -1 print(tuple_var,type(tuple_var)) print(tuple_var[1]) #运行结果: ('aa', 'bb', 'cc', 'dd') <class 'tuple'> bb
集合(set):集合类型作用:交差并补,操作无序,自动去重
set_var = {"唐僧","悟空","八戒","沙僧"} print(set_var)
(1) 是否可以获取集合中的值?不可以
set_var = {"唐僧","悟空","八戒","沙僧"} print(set_var[0]) #运行结果: TypeError: 'set' object does not support indexing (类型错误:“set”对象不支持索引)
(2) 是否可以设置集合中的值?不可以
set_var = {"唐僧","悟空","八戒","沙僧"} set_var[0] = 1 print(set_var) #运行结果: TypeError: 'set' object does not support item assignment (类型错误:“set”对象不支持项分配)
(3) 可以自动去重
set_var = {"唐僧","悟空","八戒","沙僧","悟空","八戒"} print(set_var) #运行结果: {'唐僧', '悟空', '八戒', '沙僧'}
(4) 定义空集合
set_var = set() print(set_var,type(set_var)) #运行结果: set() <class 'set'>
字典(dict):由键值对存储的数据,字面上有序,本质上无序
语法: dic_var = {"键1":"值1","键值2":"值2"} 由键值对存储数据,左边是键,右边是值,键值之间用冒号隔开. 3.6版本之前都是 字典和集合都是无序的 3.6版本之后,把字典的字面顺序记录下来,当从内存拿数据的时候, 根据字面顺序重新排序,所以看起来像有序,但本质上无序 dict_var = {"罗贯中":"三国演义","曹雪芹":"红楼梦","施耐庵":"水浒传","吴承恩":"西游记"} print(dict_var)
获取字典当中的值
dict_var = {"罗贯中":"三国演义","曹雪芹":"红楼梦","施耐庵":"水浒传","吴承恩":"西游记"} print(dict_var["罗贯中"])
修改字典当中的值
dict_var = {"罗贯中":"三国演义","曹雪芹":"红楼梦","施耐庵":"水浒传","吴承恩":"西游记"} dict_var['曹雪芹'] = "石头记" print(dict_var)
结论:
字典当中的键和集合当中的值,底层都是通过哈希算法出来的; 但凡使用了哈希算法,那么这个数据就是散列无序的,因为要把数据均匀的分布存储在内存当中,减少哈希碰撞 可哈希数据:Number(int float bool complex) str tuple 不可变的数据. 不可哈希的数据:list set dict 定义字典的语法是允许的,但是不要使用,定义字典的键,一般按照变量名的方式定义字符串. 集合的值也必须可哈希(不可变数据) 但凡是不可哈希的数据都不能作为集合的值 setvar = {1,9,"abc",(1,2,3),[1,2,3]} #error setvar = {1,9,"abc",(1,2,3,[1,2,3]) } #error print(setvar)