集合set及其操作

作用:去重,关系运算,

定义:
知识点回顾
可变类型是不可hash类型
不可变类型是可hash类型

定义集合:
集合:可以包含多个元素,用逗号分割,
集合的元素遵循三个原则:
1:每个元素必须是不可变类型(可hash,可作为字典的key)
2:没有重复的元素
3:无序

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

优先掌握的操作:
1、长度len
2、成员运算in和not in

3、|合集
4、&交集
5、-差集
6、^对称差集
7、==
8、父集:>,>=
9、子集:<,<=
练习
一.关系运算

#_author_:"Luo Yaxiong"
#date:   2018/8/26
#   有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
#   pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
#   linuxs={'wupeiqi','oldboy','gangdan'}
#   1. 求出即报名python又报名linux课程的学员名字集合
#   2. 求出所有报名的学生名字集合
#   3. 求出只报名python课程的学员名字
#   4. 求出没有同时这两门课程的学员名字集合
# 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}
# 求出即报名python又报名linux课程的学员名字集合
print(pythons & linuxs)
# 求出所有报名的学生名字集合
print(pythons | linuxs)
# 求出只报名python课程的学员名字
print(pythons - linuxs)
# 求出没有同时这两门课程的学员名字集合
print(pythons ^ linuxs)

这里写图片描述
二.去重

#1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序
#去重,无需保持原来的顺序
l=['a','b',1,'a','a']
print(set(l))

这里写图片描述

#2.在上题的基础上,保存列表原来的顺序
# #去重,并保持原来的顺序
# #方法一:不用集合
l=[1,'a','b',1,'a']
l1=[]
for i in l:
    if i not in l1:
        l1.append(i)
print(l1)

这里写图片描述
或者

# #方法二:借助集合
l=[1,'a','b',1,'a']
l1=[]
s=set()
for i in l:
    if i not in s:
        s.add(i)
        l1.append(i)
print(l1)

这里写图片描述
暂时到这

猜你喜欢

转载自blog.csdn.net/weixin_42886684/article/details/82081343
今日推荐