Python基础之数据编码
一、编码
ASCII:为最早期都编码,只有英文、数字和特殊字符。 8位bit 1字节byte
Unicode:万国码,包括全所有国家都编码,32为bit 4字节byte
UTF-8:可变长都万国码,最小字符为8为bit。英文:8为bit 1字节byte,欧洲文:16位bit 2字节byte,中文:24位bit 3字节byte。
GBK:中文国标码,包含ASCII码和中文常用编码。16位bit 2字节byte。
# 编码 x = "matt" print(x.encode("utf-8")) print(x.encode("gbk")) x = "阿斯顿飞困难" print(x.encode("utf-8")) print(x.encode("gbk")) # 解码 # 我们所看到的是系统已经帮我们解好的内容,所有我们先把内容编码成byte类型,在进行解码 print(x.encode("utf-8").decode("utf-8"))
1.1遍历循环删除列表或字典
# 循环删除字典(列表同理) # 在迭代删除的时候会报错,因为在循环的时候字典是不允许删除的, # 所以我们可以先定义一个空列表,循环列表删除字典的元素 dic = {'k1': 'alex', 'k2': 'wusir', 's1': '⾦⽼板'} # for x in dic: # if "k" in x: # del dic[x] # print(dic) del_dic =[] for x in dic: del_dic.append(x) for y in del_dic: del dic[y] print(dic)
二、深浅copy
# 浅copy lst1 = ["何炅", "杜海涛","周渝⺠",[1,2]] lst2 = lst1.copy() lst1[3].append("3") print(lst1) print(lst2) # 浅copy单层不变,相互不影响,多层内容改变则相互改变 # 单层两个内存地址是不同的,多层内内存地址相同,单层和多层内元素内存地址相同(str,int,tuple,bool) print(id(lst1[3][0]),id(lst2[3][0])) # 深copy import copy lst1 = ["何炅", "杜海涛","周渝⺠", ["麻花藤", "⻢芸", "周笔畅"]] lst2 = copy.deepcopy(lst1) lst1[3].append("Matt") print(lst1) print(lst2) # 深copy两个任意改变相互不影响 # 所有层内存地址不同,但所有元素内地址相同 print(id(lst1[1]),id(lst2[1]))