数据类型的补充(基础篇之外的知识)
-
数据类型的补充
-
str
-
首字母大写,其余的小写:
# s = 'tai1 BAi' # print(s.capitalize())
-
大小字母反转
# s = 'tai1 BAi' # print(s.swapcase())
-
非字母之间隔开的,首字母都大写,其余的小写
# s = 'tai1 BAi' # print(s.title())
-
内同居中,总长度,空白处填充
# s = 'tai1 BAi' # print(s1.center(20)) # print(s1.center(20,'*'))
-
-
元组:元组中如果只有一个元素且没有逗号,那么该元素和数据类型一致
-
列表:循环一个列表时,最好不要改变列表的大小,这样会影响最终的结果
# 列表升序 降序 反转 # list = [1,2,3,1] # list.sort() # # list.sort(reverse=True) # list.reverse() # print(list)
-
字典 update 有则改之,无则加之
# dic = {'name': '魔童', 'age': 18} # dic.update(name='魔童1号',hight='175') # # print(dic)
# dic = {'name': '魔童', 'age': 18} # dic1 = {'name':'魔童1号','hobby':'美女'} # dic.update(dic1)
# fromkeys # dic = dict.fromkeys('abc','魔童') # dic = dict.fromkeys([1,2,3],[]) # {1: [], 2: [], 3: []} # dic[1].append(66) # # {1: [66], 2: [66], 3: [66]} # print(dic)
-
-
数据类型的转换
- 其他的之前讲过,下面的是今天讲的
# str - bytes s = '中国' b = s.encode('utf-8') # 编码 # b'\xe4\xb8\xad\xe5\x9b\xbd' # print(a) print(b)
# bytes - str b = b'\xe4\xb8\xad\xe5\x9b\xbd' # 解码 s = b.decode('utf-8') print(s)
转化成bool值为False的数据类型有:
'', 0, (), {}, [], set(), None -
数据类型的分类(了解)
-
编码的进阶
-
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'hello'
-
以上总结:
-
数据类型的补充:list(sort reverse 列表的加 * 循环问题) dict (updat 循环)
-
编码的进阶:bytes类型的存在意义 str - bytes(Unicode - 非Unicode)
gbk - utf-8 **** 要转化为Unicode再去转换