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]))

 

posted @ 2019-03-13 17:22  A裴小汪  阅读(447)  评论(0编辑  收藏  举报