第一模块 day5

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:Pythonpython.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 %16 =    12

    1475 /16 =    92        取92
    1475 %16 =    3

    92    /16    = 5.75    取5
    92    %16    = 12

    5 /16 =    0.3125    取0
    5%16 = 5%那一行    结果为: 0x 5 12 3 12 ,12等于c 所以为: 0x5c3c


hex(23612)
'0x5c3c'


-------------------------------------------
原文地址:https://www.cnblogs.com/666sss/p/11580345.html