第六节课 基础总结与拓展 讲课老师:风陨老师
2021年4月5日
一、集合的判断
1、 a.issuperset(b): 判断b是否为a的子集
a = {1, 2, 3,}
b = {1, 2, 3, 4, 5}
print(a.issuperset(b)) 结果为 False
a集合中没有包含b集合中的所以元素
2、a.issubset(b): 判断a是否为b的子集
a = {1, 2, 3,}
b = {1, 2, 3, 4, 5}
print(a.issubset(b)) 结果为 True
b集合包含了a集合中的所有元素
3、isdisjoint: 判断交集---- 有–Flase —没有–True
a = {1, 2, 3,}
b = {1, 2, 3, 4, 5}
print(a.isdisjoint(b)) 结果为 False
a集合与b集合有相同的元素即有交集
#判断ab集合是不是没有交集,没有就是 True 有就是False
小知识:
可变与不可变
1、 可变 mutable 内容可以改变但是id不变
① list(列表)
a = ['x',1, 2, 3,]
print(a) 结果为['x',1, 2, 3,]
a.insert(0,'abc')
print(a) 结果为['abc', x',1, 2, 3,]
不用重新赋值直接改变结果是可变类型且内存不变
② dict {字典}
a = {'w': 1, 'x':2}
print(a) 结果{'w': 1, 'x': 2}
a.upadte({'x':5})
print(a) 结果为{'w': 1, 'x': 5}
③ set {集合}
a = {1, 2, 3, 'a'}
print(a) 结果为{1, 2, 3, 'a'}
a.add(5)
print(a) 结果为{1, 2, 3, 5, 'a'}
2、不可变 immutable 不重新赋值的情况下无法改变 重新赋值会改变内存地址
① int float 数字类型
a = 1
print(a) 结果为1
print(id(a)) id:140719190670400
a = a+1(重新赋值)
print(a) 结果为2
print(id(a)) id:140719190670432
赋值后结果改变且内存地址也跟着改变
a = 1.8
print(a) 结果为 1.8
a = 3.6-a
print(a) 结果为 1.8
ID改变
② str 字符串
a = '大熊猫是国宝'
print(a) 结果为:大熊猫是国宝
a.replace('大','')
print(a) 结果为:大熊猫是国宝
不赋值不发生改变
a = a.replace('大','')
print(a) 结果为:小熊猫是国宝
重新赋值发生改变且内存也跟着改变
③ tuple (,) 元组不可更改··只能查
a = ('x', 1, 2)
print(a) ('x', 1, 2)
二、字符串转义
1、\n 换行符 \n后面的数据夸行打印
print('abcdef') abcdefg
print('abc\ndefg') abc
degf
夸行打印
2、\t 水平制表符
print('1+1\t2+2\t3+3\t4+4')
1+1 2+2 3+3 4+4
3、\b 退格 删除一格
print('1+1\b2+2\t3+3\t4+4') 1+ 2+2 3+3 4+4
后退删除一格
4、\r 当前位置移到本行开头,且删除前面所有数据
print('1+1\r2+2\t3+3\t4+4') 2+2 3+3 4+4
5、 \ \ 防止路径被转义
print('\\') \
6、 \ ‘’ 双引号
print("\"") "
7、 \0 空一格
8、 \a 系统提示音
print('\a')
9、 防止转义
print(r'abc\ndefg') 结果为:abc\ndefg
取消转义,输入什么就打印什么不发生转变
三、编码与解码
1、encode() 编码
a = '大熊猫是国宝'
a = a.encode('utf8')
结果为b'\xe5\xa4\xa7\xe7\x86\x8a\xe7\x8c\xab\xe6\x98\xaf\xe5\x9b\xbd\xe5\xae\x9d'
2、 decode() 解码
a = '大熊猫是国宝'
a = a.encode('utf8')
print(a)
b'\xe5\xa4\xa7\xe7\x86\x8a\xe7\x8c\xab\xe6\x98\xaf\xe5\x9b\xbd\xe5\xae\x9d'
print(a.decode('utf8')) 大熊猫是国宝
#注意:英文不会被编码
四、格式化
1、 %s 站位符
a = '熊猫是国宝'
print('%s熊猫是国宝' % '大') 大熊猫是国宝
改变增加的数据类型
小知识:%r 传入什么类型就会是什么类型
print('%r熊猫是国宝' % '大') '大'熊猫是国宝
显示原数据类型
2、 %d 整数
a = 123
print('%d123' %5) 5123
3、%f 浮点数
a = 1.23
print('%.2f,1.23' % 2.7) 2.70, 1.23
4、 %c Ascll 码
a = 520
print('%c' % a) Ȉ
详情对照百度Ascll表
5、进制
(1)、 %o 8进制
a = 33
print('%o' % a) 结果为41
32/8 = 4....余1
逢8进1 33里有4个8余1
(2) %x 16进制
a = 33
print('%x' %33) 结果为21
33/16 = 2...余1
(3) %e 科学计数法
a = 33
print('%.2e' % 33) 结果为 3.30e+01
3.3*10 = 33
6、左对齐
a = ('%-7.3f' % 103)
- :指左对齐
3 :指总长为5
.3:指保留小数点3位 结果优先保留小数点位数
print(a) 结果为 103.000
小知识: len 查看数据长度
print(len(a)) 结果为 7
格式化长度
a = ('%7.3s' % 103)
结果为 103
print(len(a)) 结果为 7
五、 format 扩展
1、保留小数点后面3位数
a = '{:.3f}'.format(66.11111)
:声明小数点后面几位数
print(a) 结果为 66.111
2、指定传入,指点小数点后面3位
a = '{x:.3f}'.format(x=66.11111, y=555.5555)
指定X传入,只穿一个
结果为 66.111
指定传入一个数并且保证小数点后3位
3、百分百格式化
a = '{:.2%}'.format(0.2733)
print(a) 结果为 27.33%
把0.2733用百分比的形式显示,且保留小数点后2位数
4、转进制
(1)、转16进制
a = '{:x}'.format(68)
print(a) 结果为44
(2)、转8进制
a = '{:o}'.format(68) 结果为104
六、左右对两边
1、左对齐,
a = '{y:0<10}'.format(x=58, y=68)
y:指定传的数
0:默认是空格,此处用0表示
10:总长度
print(a) 结果为6800000000
2、右对齐
a = '{x:0>10}'.format(x=58, y=68)
print(a) 结果为0000000058
3、两边对齐
a = '{y:0^10}'.format(x=58, y=68)
print(a) 结果为0000680000
七、进制转换
1、十进制转二进制
a = 32
print(bin(a)) 结果为100000
2、十进制转八进制
a = 32
print(oct(a)) 结果为40
3、十进制转十六进制
a = 32
print(hex(a)) 结果为20
小知识:
二进制,八进制,十进制不可以互转,必须先转为十进制才可以转换
列:二进制转八进制
print(int('100000', 2)) 结果为整数 32
print(oct(32)) 结果为 40
4、chr ASCLL码转换成字符
a = 520
print(chr(a)) 结果为 Ȉ
深浅拷贝
1、浅拷 copy
a = [5, 4, 'x']
print(a) 结果为[5, 4, 'x']
a.append('3')
print(a) 结果为[5, 4, 'x', '3']
print(id(a))
b = [456 , a]
print(b) 结果为[456, [5, 4, 'x']]
print(b) 结果为[456, [5, 4, 'x', '3']]
c = b.copy()
print(c) 结果为[456, [5, 4, 'x']]
print(c) 结果为[456, [5, 4, 'x', '3']]
print(id(a)) 结果2209756041736
print(id(b)) 结果2209756042248
print(id(c)) 2209759810568
print(id(a)) 结果为2606012453384
print(id(b[1])) 结果为2606012453384
print(id(c[1])) 结果为2606012453384
浅复制外层改变,内层列表a 改变后内存地址不变
只要内层a列表改变后面都随着改变
2、深复制 import copy
a = [5, 4, 'x']
print(a) 结果为[5, 4, 'x']
b = [456 , a]
print(b) 结果为[456, [5, 4, 'x']]
import copy
c = copy.deepcopy(b)
print(c) 结果为[456, [5, 4, 'x']]
print(id(a)) 结果为2536770916872
print(id(b[1])) 结果为2536770916872
print(id(c[1])) 结果为2536774685128
内层列表a 深复制后内存改变
The end