基础补充

      • 二次编码

编码回顾:

  ascii码:最早的编码集,只有数字,字母,特殊符号,不支持中文。

  gbk:中文国标码,包含了ASCII编码和中文的常用的编码。

  unicode:万国码,包含了所有国家的语言。

  utf-8:可变长度的万国码,英文占1个字节(8bit),欧洲文字占两个字节(16bit),亚洲文字占3个字节(24bit)。

编码:

1 s = "葫芦娃"
2 s1 = s.encode("utf-8")  # utf-8为编码集
3 print(s1)
4 # 输出结果
5 # b'xe8x91xabxe8x8axa6xe5xa8x83'

解码:

1 s = b'xe8x91xabxe8x8axa6xe5xa8x83'
2 s1 = s.decode("utf-8")
3 print(s1)
4 # 输出结果
5 # 葫芦娃

 编码与解码的应用场景:文件操作,网络传输,网络编程

  • 基础数据类型补充

利用for循环删除一个列表:

1 # 错误示例
2 lst = ["大娃", "二娃", "三娃", "四娃", "五娃", "六娃", "七娃"]
3 for i in lst:
4     lst.remove(i)
5 print(lst)
6 # 输出结果
7 # ['二娃', '四娃', '六娃']

 那么为什么删不干净呢?因为当第一次循环的时候删除了"大娃",这时候列表中剩余的元素都向前移了一位,for循环第二次的时候,在第二个位置的是"三娃",这时候"三娃"被删除了,后面的以此类推。

1 # 正确方法1
2 lst = ["大娃", "二娃", "三娃", "四娃", "五娃", "六娃", "七娃"]
3 for i in range(len(lst)):
4     lst.pop()
5 print(lst)
6 # 输出结果
7 # []
 1 # 正确方法2
 2 lst = ["大娃", "二娃", "三娃", "四娃", "五娃", "六娃", "七娃"]
 3 ls1 = []
 4 for i in lst:
 5     ls1.append(i)
 6 for n in ls1:
 7     lst.remove(n)
 8 print(lst)
 9 # 输出结果
10 # []
  •  深浅拷贝

浅拷贝:

 1 li = [1, 2, 3, 4, [5, 6, 7]]    
 2 lst = li.copy()
 3 print(li)
 4 print(lst)
 5 # [1, 2, 3, 4, [5, 6, 7]]
 6 # [1, 2, 3, 4, [5, 6, 7]]
 7 li[-1].append(90)
 8 print(li)
 9 print(lst)
10 # [1, 2, 3, 4, [5, 6, 7, 90]]
11 # [1, 2, 3, 4, [5, 6, 7, 90]]

 为什么我们给li这个列表里边嵌套的列表添加了一个元素后,lst这个列表也变了呢?

  下面我们来画图分析一下:

 

深拷贝:

那么我们怎么样才能让新列表不受原来的列表影响呢?

 1 import copy
 2 lst = [1, 2, 3, 4, [5, 6, 7]]
 3 ls = copy.deepcopy(lst)
 4 print(lst)
 5 print(ls)
 6 # 输出结果
 7 # [1, 2, 3, 4, [5, 6, 7]]
 8 # [1, 2, 3, 4, [5, 6, 7]]
 9 lst.append(90)
10 print(lst)
11 print(ls)
12 # 输出结果
13 # [1, 2, 3, 4, [5, 6, 7], 90]
14 # [1, 2, 3, 4, [5, 6, 7]]
  • is 和 == 的区别

is是判断两边的内存地址是否相等

==是判断两边的值是否相等

  • 代码块和小数据池

代码块:
  一个文件,模块,类,函数 cmd一行就是一个代码块
  python内置,为了节省资源,提高效率

  数字: 范围 -5 ~ 256

  字符串: 字符串进行乘法的时候总长度不能超过20

小数据池:

  python内置

  数字: 范围 -5 ~ 256

  字符串: 字符串进行乘法的时候总长度不能超过20

  在同一文件下,先执行代码块,后执行小数据池

原文地址:https://www.cnblogs.com/jiayunlong/p/10236144.html