Python基础数据类型补充
字符串
元组
-
Python元组有一个特性,元组中如果只含有一个元素且没有逗号,该数据类型不是元组,与该元素数据类型一致
tu = ('yue') print(tu, type(tu)) # 'yue' <class 'str'> tu = ('yue',) print(tu, type(tu)) # ('yue',) <class 'tuple'>
-
元组也有一些其他方法
-
index:通过元素找索引(可切片),找到第一个元素就返回,找不到该元素就报错
tu = ('nayue', 'cat', 'de', 'xin') tu.index('nayue') # 0
-
count:获取某元素在列表中出现的次数
tu = ('cat', 'na', 'cat') tu.count('cat') # 2
-
列表
-
例:
# 现有列表 ls1 = [11, 22, 33, 44, 55, 57, 58] # 请把索引为奇数对应的元素删除 # 坑 如果循环判断索引删除的话,每删除一位,列表元素会前进一位 # 直接删除 del ls1[1::2] # 倒序删除 None # 思维置换 None
在循环一个列表过程中,如果你要改变列表的大小(增加值,或者删除值),那么结果很可能出错或报错
字典
-
update
dic = {'name': 'yue', 'sex': 'girl'} dic.update(height = 174, age = 18) print(dic) # {'name': 'yue', 'sex': 'girl', 'height': 174, 'age': 18} dic = {'name': 'yue', 'sex': 'girl'} dic.update([('one',1),('two',2),('three',3)]) print(dic) # {'name': 'yue', 'sex': 'girl', 'one': 1, 'two': 2, 'three': 3} # 拥有相同key的修改,不同的增加 dic1 = {'name': 'yue', 'sex': 'girl'} dic2 = {'name': 'cat', 'hobby': 'man'} dic1.update(dic2) print(duc1) # {'name': 'cat', 'sex': 'girl', 'hobby': 'man'} -
字典的循环
# 现有字典 dic = {'name1': 'cat', 'name2': 'yue', 'hobby': 'man'} # 请把所有key中带"name"的删除 for k in dic: if 'name' in k: del dic['k'] print(dic) # RuntimeError: dictionary changed size during iteration 错误原因:字典在循环迭代时,改变了大小
在循环一个字典的过程中,不要改变字典的大小(增删字典的元素),这样会直接报错
数据类型的转换问题
-
int bool str 三者转换
# int ---> bool print(bool(100)) # True 非零即True print(bool(0)) # False 零即False # bool ---> int print(int(True)) # 1 True --> 1 print(int(False)) # 0 False --> 0 # int ---> srt print(str(100)) # '100' # str ---> int 全部由数字组成的字符串才可以转换成数字 print(int('88')) # 88 # str ---> bool print(bool('yue')) # True 非空即True print(bool('')) # False # bool ---> str print(str(True)) # True
-
str list 两者转换
# str ---> list s1 = 'yue jin nain' print(s1.split()) # ['yue', 'jin', 'nain'] # list --> str l1 = ['yue', 'jin', 'nain'] print(' '.join(l1)) # 'yue jin nain'
-
list set 两者转换
# list ---> set print(set([1,2,3])) # {1, 2, 3} # set ---> list print(list({1,2,3})) # [1, 2, 3]
-
str bytes 两者转换
# str ---> bytes s1 = '那月' print(s1.encode('utf-8')) # b'\xe9\x82\xa3\xe6\x9c\x88' # bytes ---> str b1 = b'\xe9\x82\xa3\xe6\x9c\x88' print(b1.decode('utf-8')) # 那月
-
所有的数据都可以转换为bool值
# 转换为bool值得False的数据类型有 '', 0, (), {}, [], set(), None
基础数据类型的总结
-
按存储空间的占用分(从低到高)
数字 字符串 集合:无序,即无需存索引相关信息 元组:有序,需要存储索引相关信息,不可变 列表:有序,需要存储索引相关信息,可变,需要处理数据的增删改 字典:无序,需要存储key与value的相关信息,可变需要处理数据的增删改(3.6之后有序) -
按存值个数区分
区分类型 数据类型 标量/原子类型 数字,字符串 容器类型 列表,元组,字典 -
按可变不可变区分
区分类型 数据类型 可变 列表,字典 不可变 数字,字符串,元组,布尔值 -
按访问顺序区分
区分类型 数据类型 顺序访问(序列类型) 字符串,列表,元组 key值访问(映射类型) 字典
编码的进阶
-
编码的回顾
-
ASCII码:包含英文字母,数字,特殊字符与01010101对应关系。
-
GBK:只包含本国文字(以及英文字母,数字,特殊字符)与0101010对应关系。
-
Unicode:包含全世界所有的文字与二进制0101001的对应关系。
-
UTF-8:包含全世界所有的文字与二进制0101001的对应关系(最少用8位一个字节表示一个字符)。
-
-
知识点普及
-
在计算机内存中,统一使用Unicode编码,当需要将数据保存到硬盘或者需要网络传输的时候,就转换为非Unicode编码比如:bytes。
- bytes类型也称作字节文本,他的主要用途就是网络的数据传输,与数据存储。
-
不同编码之间,不能直接互相识别。
-

浙公网安备 33010602011771号