数据类型的补充 day07
-
数据类型补充
- str
#str 补充方法练习一遍就行 # s = 'HolTing' # #capitalize 首字母大写,其余小写 # print(s.capitalize()) # #swapcase 大小写翻转 # print(s.swapcase()) # #title 每个单词的首字母大写 # msg= 'taibai say3hi' # print(msg.title()) #center 居中 s1 = 'holting' # print(s1.center(20)) # print(s1.center(20,'*')) #find 通过元素找索引,找到第一个就返回,找不到返回-1 #index 通过元素找索引,找到第一个就返回,找不到 报错 # print(s1.find('a')) # print(s1.find('h')) # print(s1.index('O'))
-
元祖 tuple
#元祖中只有一个元素并且没有逗号,那它不是元祖。它与该数据类型一致 # tu1 = (2,3,4) # tu1 = (2) # tu1 = ('太白') # tu1 = ([1,2,3]) # tu1 = (1,) # print(tu1,type(tu1)) # tu = (1,2,3,3,3,2,2,3, #count 计数 # tuple1 = (1,2,3,4,) # print(tuple1.count(1)) # # index # print(tuple1.index(2))
-
列表 list
#l1 = ['太白', '123', '女神', '大壮'] #count pass #index #print(l1.index('大壮')) #sort #l1 = [5,4,3,7,8,6,1,0] # l1.sort()#默认从大到小 # print(l1) # l1.sort(reverse=True) # print(l1) # l1.reverse()#反转 # print(l1) #列表可以相加 # l1 = [1,2,3] # l2 =[1,2,3,4,'holting'] # print(l1 + l2) # # #列表与数字相乘 # l1 = [1, 'daf', 3] # l2 = l1*3 # print(l2) #l1 = [11, 22, 33, 44, 55] # 索引为奇数对应的元素删除(不能一个一个删除,此l1只是举个例子,里面的元素不定)。 # del l1[1::2] # print(l1) #倒序法删除元素 # for i in range(len(l1)-1,-1,-1): # if i %2 ==1: # l1.pop(i) # print(l1) # 思维置换 # l1 = [11, 22, 33, 44, 55] # new_l1 = [] # for index in range(len(l1)): # if index % 2 ==0: # new_l1.append(l1[index]) # # print(new_l1) # l1 = new_l1 # print(l1) # 循环一个列表的时,最好不要改变列表的大小,这样会影响你的最终的结果。
-
字典
#字典的补充 #update #dic = {'name': '太白', 'age': 18} # dic.update(hobby='运动',hight='175') # dic.update(name='holting') # dic.update([(1,'a'),(2,'b'),(3,'c'),(4,'d')]) # print(dic) # dic1 = {"name":"jin","age":18,"sex":"male"} # dic2 = {"name":"alex","weight":75} # dic1.update(dic2)#更新,有则覆盖,无则添加 # print(dic1) # print(dic2) #fromkeys 坑:值共有一个 #dic = dict.fromkeys('abc', 100) #dic = dict.fromkeys([1, 2, 3], 'alex') #print(dic) #ic = dict.fromkeys([1,2,3],[]) # dic[1].append(666) # print(dic) dic = {'k1': '太白', 'k2': 'barry', 'k3': '白白', 'age': 18} # 将字典中键含有'k'元素的键值对删除。 # for i in list(dic.keys()):# ['k1', 'k2', 'k3','age'] # if "k" in i: # dic.pop(i) # print(dic) # for key in dic: # if 'k' in key: # dic.pop(key) # print(dic) #循环一个字典时,如果改变这个字典的大小,就会报错。 # l1 = [] # for key in dic: # if 'k' in key: # l1.append(key) # print(l1) # for i in l1: # dic.pop(i) # print(dic)
- 数据类型的转换
# ,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:
表现形式:'中国'
bytes:
内存中的编码方式: 非Unicode#utf-8
表现形式:b'\xe4\xb8\xad\xe5\x9b\xbd'
#str -->bytes # s ='中国' # b = s.encode('utf-8')#编码 # print(b,type(b))#b'\xe4\xb8\xad\xe5\x9b\xbd' <class 'bytes'> # b = s.encode('gbk')#编码 # bytes --> str # b =b'\xe4\xb8\xad\xe5\x9b\xbd' # s = b.decode('utf-8')#解码 # print(s)
#gbk -->utf-8 # b1 = b'\xd6\xd0\xb9\xfa' # s = b1.decode('gbk') # print(s) # b2 = s.encode('utf-8') # print(b2)#b'\xe4\xb8\xad\xe5\x9b\xbd'