一、编码
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]))