数据类型
-
-
数据类型之间的转换
-
编码的进阶
02 昨日内容回顾以及作业讲解
-
id == is:
-
== :数值是否相同 is:内存地址,id 获取对象的内存地址
-
-
代码块:一个文件,交互式命令一行就是一个代码块。
-
同一代码块下缓存机制(字符串驻留机制):
-
所有数字,bool 几乎所有的字符串
-
优点:提升性能,节省内存空间。
-
-
不同代码块的缓存机制(小数据池):在内存中开辟两个空间,一个空间存储-5~256的int,一个空间存储一定规则的字符串,如果你的代码中遇到了满足条件的数据,直接引用提前创建的。
-
-5~256 int,bool,满足一定规则的字符串。
-
优点:提升性能,节省内存空间。
-
-
集合:列表去重,关系测试 交并差。
-
深浅copy:
-
浅copy:在内存中开辟一个新的空间存放copy的对象(列表,字典),但是里面的所有元素与被copy对象的里面的元素共用一个。
-
03 具体内容
-
数据类型的补充
-
str
1 # str :补充的方法练习一遍就行。 2 # s1 = 'taiBAi' 3 # capitalize 首字母大写,其余变小写 4 # print(s1.capitalize()) 5 # swapcase 大小写翻转 6 # print(s1.swapcase()) 7 # title 8 # msg= 'taibai say3hi' 9 # print(msg.title()) #每个单词的首字母大写 10 11 s1 = 'barry' 12 # 居中 13 # print(s1.center(20)) 14 # print(s1.center(20,'*')) 15 16 # find :通过元素找索引,找到第一个就返回,找不到 返回-1 17 # index:通过元素找索引,找到第一个就返回,找不到 报错 18 # print(s1.find('a')) 19 # print(s1.find('r')) 20 # print(s1.find('o')) 21 # print(s1.index('o'))
-
元组
1 # tuple 2 # 元组中如果只有一个元素,并且没有逗号,那么它不是元组,它与改元素的数据类型一致。 *** 3 # tu1 = (2,3,4) 4 # tu1 = (2) 5 # tu1 = ('太白') 6 # tu1 = ([1,2,3]) 7 # tu1 = (1,) 8 # print(tu1,type(tu1)) 9 # tu = (1,2,3,3,3,2,2,3,) 10 # # count 计数 11 # print(tu.count(3)) 12 # tu = ('太白', '日天', '太白') 13 # # index 14 # print(tu.index('太白'))
-
列表
1 # l1 = ['太白', '123', '女神', '大壮'] 2 # count pass 3 # index 4 # print(l1.index('大壮')) 5 # sort ** 6 # l1 = [5, 4, 3, 7, 8, 6, 1, 9] 7 # # l1.sort() # 默认从小到大排序 8 # # l1.sort(reverse=True) # 从大到小排序 ** 9 # l1.reverse() # 反转 ** 10 # print(l1) 11 # 列表可以相加 12 # l1 = [1, 2, 3] 13 # l2 = [1, 2, 3, '太白', '123', '女神'] 14 # print(l1 + l2) 15 16 # 列表与数字相乘 17 # l1 = [1, 'daf', 3] 18 # l2 = l1*3 19 # print(l2) 20 21 l1 = [11, 22, 33, 44, 55] 22 # 索引为奇数对应的元素删除(不能一个一个删除,此l1只是举个例子,里面的元素不定)。 23 # *** 重要 24 # 正常思路: 25 # 先将所有的索引整出来。 26 # # 加以判断,index % 2 == 1: pop(index) 27 # for index in range(len(l1)): 28 # if index % 2 == 1: 29 # l1.pop(index) 30 # print(l1) 31 # 列表的特性: 32 # l1 = [11, 22, 33, 44, 55] 33 # 最简单的: 34 # del l1[1::2] 35 # print(l1) 36 # l1 = [11, 22, 33, 44, 55] 37 # # 倒序法删除元素 38 # for index in range(len(l1)-1,-1,-1): 39 # if index % 2 == 1: 40 # l1.pop(index) 41 # print(l1) 42 43 # 思维置换 44 # l1 = [11, 22, 33, 44, 55] 45 # new_l1 = [] 46 # for index in range(len(l1)): 47 # if index % 2 ==0: 48 # new_l1.append(l1[index]) 49 # # print(new_l1) 50 # l1 = new_l1 51 # print(l1) 52 53 # 循环一个列表的时,最好不要改变列表的大小,这样会影响你的最终的结果。 54
-
字典
1 # 字典的补充 2 # update *** 3 # dic = {'name': '太白', 'age': 18} 4 # # dic.update(hobby='运动', hight='175') 5 # # dic.update(name='太白金星') 6 # dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')]) # 面试会考 7 # print(dic) 8 # dic1 = {"name":"jin","age":18,"sex":"male"} 9 # dic2 = {"name":"alex","weight":75} 10 # dic1.update(dic2) # 更新,有则覆盖,无责添加 11 # print(dic1) # {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75} 12 # print(dic2) 13 14 # fromkeys 15 # dic = dict.fromkeys('abc', 100) 16 # dic = dict.fromkeys([1, 2, 3], 'alex') 17 # 坑:值共有一个,面试题 18 # dic = dict.fromkeys([1,2,3],[]) 19 # dic[1].append(666) 20 # print(dic) 21 dic = {'k1': '太白', 'k2': 'barry', 'k3': '白白', 'age': 18} 22 # 将字典中键含有'k'元素的键值对删除。 23 # for key in dic: 24 # if 'k' in key: 25 # dic.pop(key) 26 # print(dic) 27 28 # 循环一个字典时,如果改变这个字典的大小,就会报错。 29 # l1 = [] 30 # for key in dic: 31 # if 'k' in key: 32 # l1.append(key) 33 # print(l1) 34 # for i in l1: 35 # dic.pop(i) 36 # print(dic) 37 38 # for key in list(dic.keys()): # ['k1', 'k2', 'k3','age'] 39 # if 'k' in key: 40 # dic.pop(key) 41 # print(dic)
-
-
数据类型的转换
1 # 0,''(),[],{},set(),None 转换成bool值为False
-
数据类型的分类(了解)
-
编码的进阶
-
ASCII码:包含英文字母,数字,特殊字符与01010101对应关系。
a 01000001 一个字符一个字节表示。
-
GBK:只包含本国文字(以及英文字母,数字,特殊字符)与0101010对应关系。
a 01000001 ascii码中的字符:一个字符一个字节表示。
中 01001001 01000010 中文:一个字符两个字节表示。
-
Unicode:包含全世界所有的文字与二进制0101001的对应关系。
a 01000001 01000010 01000011 00000001
b 01000001 01000010 01100011 00000001
中 01001001 01000010 01100011 00000001
-
UTF-8:包含全世界所有的文字与二进制0101001的对应关系(最少用8位一个字节表示一个字符)。
a 01000001 ascii码中的字符:一个字符一个字节表示。
To 01000001 01000010 (欧洲文字:葡萄牙,西班牙等)一个字符两个字节表示。
中 01001001 01000010 01100011 亚洲文字;一个字符三个字节表示。
-
不同的密码本之间能否互相识别?不能。
-
数据在内存中全部是以Unicode编码的,但是当你的数据用于网络传输或者存储到硬盘中,必须是以非Unicode编码(utf-8,gbk等等)。
英文:
str: 'hello '
内存中的编码方式: Unicode
表现形式: 'hello'
bytes :
内存中的编码方式: 非Unicode
表现形式:b'hello'
-
中文:
str:
内存中的编码方式: Unicode
表现形式:'中国'
bytes :
内存中的编码方式: 非Unicode # Utf-8
表现形式:b'\xe4\xb8\xad\xe5\x9b\xbd'
1 # str ---> bytes\ 2 # s1 = '中国' 3 # b1 = s1.encode('utf-8') # 编码 4 # print(b1,type(b1)) # b'\xe4\xb8\xad\xe5\x9b\xbd' 5 # # b1 = s1.encode('gbk') # 编码 # b'\xd6\xd0\xb9\xfa' <class 'bytes'> 6 # # bytes---->str 7 # b1 = b'\xe4\xb8\xad\xe5\x9b\xbd' 8 # s2 = b1.decode('utf-8') # 解码 9 # print(s2)
1 # gbk ---> utf-8 2 b1 = b'\xd6\xd0\xb9\xfa' 3 s = b1.decode('gbk') 4 # print(s) 5 b2 = s.encode('utf-8') 6 print(b2) # b'\xe4\xb8\xad\xe5\x9b\xbd'
04 今日总结
-
数据类型的补充: list(sort,revrse,列表的相加,乘,循环问题),dict (update 循环问题) ***
-
编码的进阶:
-
bytes为什么存在?
-
str --->bytes(Unicode ---> 非Unicode)
-
gbk <-----> utf-8
-
05 预习内容
预习内容:
文件操作,博客地址:http://www.cnblogs.com/jin-xin/articles/8183203.html