2.19 2.20
集合
1/
里面的元素不可变,你不能存list dict在集合里, 字符串 数字 元组等不可变的类似可以存
2/
天生去重
3/
无序,
集合可以干2件事
去重 和 关系运算, 交集 差集 并集
a = {1,2,3,4,2,
'alex',3,
'rain',
'alex'}
print(a)
{1, 2, 3, 4,
'alex',
'rain'}
天生去重,所以重复的值 存不进去
----------------------
帮列表去重, 因为集合天生去重,所以 想办法把列表转成集合, 去重后,在转回列表
li = [1,2,1,22,3,2,1,4,
'rain',
'alex']
print(li)
newli =
set(li)
print(newli)
print(list(newli))
--------------------------------------------
D:\Python\python.exe D:/cc/
集合.py
[1, 2, 1, 22, 3, 2, 1, 4,
'rain',
'alex']
{1, 2, 3, 4,
'alex',
'rain', 22
}
[1, 2, 3, 4,
'alex',
'rain', 22
]
如上所示,列表可以存多个重复的值,也存在多个重复的值,想把列表去重
1/
通过set 把列表转成 集合
2/
集合在转成列表
-----------------------------------------
增: add()
a ={1, 2, 3, 4,
'alex',
'rain'}
a.add(5
)
a
{1, 2, 3, 4, 5,
'alex',
'rain'}
删: discard() 注意:如果删除一个不存在的值, 不会报错,也不会返回数据
a
{1, 2, 3, 4, 5,
'alex',
'rain'}
a.discard('alex')
a
{1, 2, 3, 4, 5,
'rain'}
pop() 随机删除,少用,用在特定场景
a.pop() pop 是随机删除. 因为数据量太少,肉眼看上去是按照顺序删除的..这叫幻觉
1
a
{2, 3, 4, 5,
'rain'}
remove() 类似 discard ,但是 如果删除一个不存在的值,会报错.
删除存在的不报错,但是也不会返回数据
a
{2, 3, 4, 5,
'rain'}
a.remove(1
)
Traceback (most recent call last):
File "<input>", line 1,
in <module>
KeyError: 1
2.20
集合关系运算
s_1024 = {
"佩奇",
"老男孩",
"海峰",
"马JJ",
"老村长",
"黑姑娘",
"Alex"}
s_pornhub = {
"Alex",
"Egon",
"Rain",
"马JJ",
"Nick",
"Jack"}
1/ 交集 &
intersection() 把在集合1 和集合2 都存在的 取出来
注意:intersection.update() 取出来的结果 和 intersection()一样,但是会把原集合重新覆盖..为取出来的数据
s_1024 &
s_pornhub s_1024.intersection(s_pornhub)
{'Alex',
'马JJ'}
---------------------------
2/ 并集
or 合集 |
union() 把2种数据合并在一起,去重了
s_1024 |
s_pornhub s_1024.union(s_pornhub)
{'老村长',
'Rain',
'佩奇',
'Egon',
'Nick',
'黑姑娘',
'Alex',
'海峰',
'老男孩',
'Jack',
'马JJ'}
------------------------
3/ 差集 -
difference() 只看1024的.如果看过1024,也看过pronhub,就不显示
注意:difference_update() 取出来的结果 和 difference()一样,但是会把原集合重新覆盖..为取出来的数据
s_1024 -
s_pornhub s_1024.difference(s_pornhub)
{'老村长',
'佩奇',
'黑姑娘',
'海峰',
'老男孩'}
-------------------------------
4/ 对称差集 ^
symmetric_difference() 把脚踩2只船的T出去
s_1024 ^
s_pornhub s_1024.symmetric_difference(s_pornhub)
{'Egon',
'老村长',
'佩奇',
'Nick',
'黑姑娘',
'老男孩',
'Jack',
'Rain',
'海峰'}
--------------------------------------------
1/ 判断2个集合是不是 不相交 ,返回True
or False
print(s_1024.isdisjoint(s_pornhub))
False
因为真是结果相交,所以 返回 False
2/ 判断s_1024是不是s_pornhub的子集,返回True
or False
print(s_1024.issubset(s_pornhub))
False
因为1024并不是pronhub的子集,所以返回 False
3/ 判断s_1024是不是s_pornhub的父集,返回True
or False
print(s_1024.issuperset(s_pornhub))
False
因为1024并不是pronhub的子集,所以返回 False
---------------------------------------------------
2.21
二进制
128 64 32 16 8 4 2 1
245的二进制是什么.可以这样思考
上面全部加起来为 255, (128*2)-1=255
所以 255-10 =245
去掉10个,那么就成功了
8+2=10
,那么去掉8 和2 ,结果就是
11110101
, 用内置函数看一下结果是否正确:
bin(245
)
'0b11110101'
128 64 32 16 8 4 2 1
1 1 1 1 0 1 0 1
-------------------------------
2.22 字符编码-
文字是如何显示的
ord()
每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位
每8个bit组成一个字节,这是计算机中最小的存储单位(毕竟你是没有办法存储半个字符的)
每8个2进制位代表一个字符
bit 位,计算机中最小的表示单位
8bit =
1bytes 字节,最小的存储单位,1bytes缩写为1B
1KB=
1024B
1MB=
1024KB
1GB=
1024MB
1TB=
1024GB
1PB=
1024TB
1EB=
1024PB
1ZB=
1024EB
1YB=
1024ZB
1BB=
1024YB
-----------------------------------
2.26
16进制
16进制转换10进制
0 1 2 3 4 5 6 7 8 9 A = 10, B = 11,,C =12,D=13,E=14,F= 15
FFF=15(16^2) + 15(16^1) + 15*(16^0) = 4095
hex(4095
)
'0xfff'
10进制转16进制算法
除16取余数得最低1位,然后把商继续除得第2位,直到商等于0
举例: 23612
16进制结果
解: 23612 /16 = 1475.75
取1475
23612 = 12
1475 /16 = 92
取92
1475 = 3
92 /16 = 5.75
取5
92 = 12
5 /16 = 0.3125
取0
5 = 5
看%那一行 结果为: 0x 5 12 3 12 ,12等于c 所以为: 0x5c3c
hex(23612
)
'0x5c3c'
-------------------------------------------
转载于:https://www.cnblogs.com/666sss/p/11580345.html