python课程第三周小结_Python学习心得第三周-01 集合

#作用:去重,关系运算,

#定义:

知识点回顾

可变类型是不可hash类型

不可变类型是可hash类型

#定义集合:

集合:可以包含多个元素,用逗号分割,

集合的元素遵循三个原则:

1:每个元素必须是不可变类型(可hash,可作为字典的key)

2:没有重复的元素

3:无序

!!!注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

#优先掌握的操作:

#1、集合的定义以及3个注意点

#2、集合的关系运算

#3、len,in not in

#4、for循环遍历集合

#需要掌握:(*****)

#1、集合的去重以及局限性

#2、往集合内添加或删除元素,add,update,pop,remove,discard

pythoners=['alexdsb','egon','lxxdsb','oldboy','吴三江','张铁蛋']

linuxers=['张刚蛋','李铜弹','赵银蛋','alexdsb','oldboy','李蛋蛋']

l=[]

for item in pythoners:

if item in linuxers:

l.append(item)

print(l)

# 集合类型:

#作用:

#1、去重

#2、关系运算

# 定义:逗号分隔开多个元素

# 注意:

# 1、每一个元素都必须是不可变类型

# 2、集合内元素不能重复

# 3、集合内元素无序

s={1,2,1,1,1,1,1,1,1} #s=set({1,2})

print(type(s))

print(s)

s=set('hello') #{}

print(s)

#1、|合集

#2、&交集

#3、-差集

#4、^对称差集

#5、==

#6、父集:>,>=

#7、子集:

#1、关系运算

pythoners={'alexdsb','egon','lxxdsb','oldboy','吴三江','张铁蛋'}

linuxers={'张刚蛋','李铜弹','赵银蛋','alexdsb','oldboy','李蛋蛋'}

#1.1、求既报名linux又包名python的学员有哪些=》即求两个集合体的共同部分,称之为交集

print(pythoners & linuxers)

print(pythoners.intersection(linuxers))

#1.2、求只报名python,没有报名linux的学员有哪些=》即集合pythoners减去linuxers,称之为差集

print(pythoners - linuxers)

print(pythoners.difference(linuxers))

#1.3、求只报名linux,没有报名python的学员有哪些

print(linuxers - pythoners)

print(linuxers.difference(pythoners))

#1.4 求老男孩所有报名的学生姓名->即求两个集合体的总和,称之为并集

print(pythoners | linuxers)

print(pythoners.union(linuxers))

#1.5 求没有同时报名两门课程的学生姓名->称之为对称差集

print(pythoners ^ linuxers)

print(pythoners.symmetric_difference(linuxers))

#1.6 ==

s1={1,2,3}

s2={3,2,1}

print(s1 == s2)

# 注意:只有在两个集合存在包含与被包含的关系时才可以进行大小的比较

#1.7、父集:>,>=

s1={1,2,3}

s2={1,2}

print(s1 > s2) # s1是s2的父集

print(s1 >= s2) # s1是s2的父集

print(s1.issuperset(s2)) #s1 >= s2

s3={1,2,3}

s4={3,4,5,6}

print(s4 >= s3)

#1.8、子集:

print(s2.issubset(s1)) #s2 <= s1

print(len({1,2,3}))

print(1 in {1,2,3})

# 集合其他的内置方法

s1={1,2,3,4,5}

print(id(s1))

s1.add(6)

print(s1)

print(id(s1))

s2={3,4}

s1.difference_update(s2) ## s1=s1.difference(s2) #s1=s1 - s2

print(s1)

s3={6,7}

print(s1.isdisjoint(s3))

# 删除

print(s1.pop()) # 随机删除

s1.discard(333333) # 指定元素删除,,如果元素不存在也不报错

s1.remove(3333) # 指定元素删除,如果元素不存在则报错

print(s1)

s1={1,2,3,4,5}

s1.update({3,4,5,6,7})

s1.update('hello')

print(s1)

#去重

#局限性:

#1、不能保证原来的顺序

#2、不能针对可变类型去重

l=[1,1,1,1,'egon','alex','egon',{'x':1}]

s=set(l) #{1,'egon','alex'}

print(s)

l=list(s) #[]

print(l)

# 需求:

#1、列表内的元素有可变类型

#2、去重之后要保持原来顺序

info=[

{'name':'egon','age':18},

{'name':'alex','age':73},

{'name':'egon','age':18},

{'name': 'lxx', 'age': 19},

{'name':'egon','age':18},

{'name':'lxx','age':19},

]

l=[]

for dic in info:

if dic not in l:

l.append(dic)

info=l

print(info)

# 循环

s={'egon','alex','wxx','lxx'}

for item in s:

print(item)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值