Python基础之数据编码

本文深入探讨了编码原理,包括ASCII、Unicode、UTF-8和GBK等编码方式的特性和应用,以及Python中编码与解码的实现。同时,详细讲解了Python中深拷贝与浅拷贝的区别,演示了不同情况下数据拷贝的行为变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编码

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

 

转载于:https://www.cnblogs.com/Matt-Pei/p/10524552.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值