- # 一, 集合类型
- ### 找出两个集合的交集并将结果打印出来
- # python_stu=['egon','alex','kevin','王大炮','李二丫']
- # linux_stu=['张铁蛋','刘铜蛋','赵金蛋','alex','kevin','oldboy']
- # res=[]
- # for stu1 in python_stu:
- # if stu1 in linux_stu:
- # res.append(stu1)
- # print(res)
- #
- #2 集合
- # 定义方式: 在 {
- } 用逗号分割开多个元素, 但是集合内元素必须要满足一下特点
- #2.1: 必须是不可变类型
- #2.2: 不能重复
- #2.3: 集合内元素无序
- # s={
- 1,1,1,1,1,1
- } #s=set({
- 1,1,1,1,1,1
- })
- # print(s)
- # print(type(s))
- # s1=set('hello')
- # print(s1)
- # print(type(s1))
- # s={
- }
- # print(type(s))
- # 这样定义一个空的, 打印出来的是一个字典
- # 要定义一个集合必须这样定义
- # s=set()
- # print(s,type(s))
- # s={
- 'egon','alex','kevin','oldboy'
- }
- # print(s,type(s))
- # 3, 常用操作 + 内置的方法
- # 优先掌握的操作:(*****)
- #1, 长度 len
- # s={
- 'egon','alex','kevin','oldboy'
- }
- # print(len(s))
- #2, 成员运算 in 和 not in
- # s={
- 'egon','alex','kevin','oldboy'
- }
- # print('egon' in s)
- # python_stu={
- 'egon','alex','kevin','王大炮','李二丫'
- }
- # for item in python_stu:
- # print(item)
- # linux_stu={
- '张铁蛋','刘铜蛋','赵金蛋','alex','kevin','oldboy'
- }
- #3,| 合集: 取两个集合合并后的结果, 例如: 取老男孩所有报名的学生姓名
- # print(python_stu | linux_stu)
- # print(python_stu.union(linux_stu))
- # python_stu=python_stu.union(linux_stu)
- # python_stu.update(linux_stu)
- # print(python_stu)
- #4,& 交集: 取两个集合共同的部分, 例如: 取同时报名两门课程的学员
- # print(python_stu & linux_stu)
- # print(python_stu.intersection(linux_stu))
- # python_stu.intersection_update(linux_stu) #python_stu=python_stu.intersection(linux_stu)
- # print(python_stu)
- #5,- 差集: 取存在于左边结合但不存在与右面集合的元素, 例如: 取只报名 python 课程的学员
- # print(python_stu - linux_stu)
- # print(python_stu.difference(linux_stu))
- #6,^ 对称差集: 例如: 取没有同时报名两门课程的学员
- # print((python_stu - linux_stu) | (linux_stu - python_stu))
- # print(python_stu ^ linux_stu)
- # print(python_stu.symmetric_difference(linux_stu))
- #7,== 判断是否相等, 集合中只要元素相等, 集合就相等, 集合是无序的
- # s1={
- 1,2,3
- }
- # s2={
- 3,2,1
- }
- # print(s1 == s2)
- #8, 父集:>= print(s1.issuperset(s2))
- #9, 子集:<= print(s2.issubset(s1))
- # s1={
- 1,2,3,4
- }
- # s2={
- 1,2,3
- }
- # print(s1>= s2)
- # print(s1.issuperset(s2))
- # print(s2.issubset(s1))
- # 集合類型其他内置方法(**)
- ##pop 从最后面弹出来 一个一个按照顺序弹出来
- # s1={
- 'a','b','c'
- }
- # print(s1.pop())
- # print(s1)
- # print(s1.pop())
- # print(s1)
- # print(s1.pop())
- # print(s1)
- # res=s1.remove('b')
- # print(s1)
- # print(res)
- # s1.remove('d')
- # s1.discard('d')
- # print(s1)
- # s1.add('d')
- # print(s1)
- # s1={
- 1,2,3
- }
- # s2={
- 6,4,5
- }
- # print(s1.isdisjoint(s2))
- # 判断两个集合是否有交集
- # ====================================== 该类型总结 ====================================
- # 集合是存多个值的
- # 无序的
- # 可变类型(1, 可变: 值变, id 不变. 可变 == 不可 hash 2, 不可变: 值变, id 就变. 不可变 == 可 hash)
- # s1={
- 1,2,3
- }
- # print(id(s1))
- # s1.update({
- 4,5,6
- })
- # print(s1)
- # print(id(s1))
- # 去重:
- # stus=['egon','egon','egon','kevin',1,2,3,'alex']
- # res=set(stus)
- # print(list(res))
- # 去重的局限性:
- #1. 被去重的元素必須是不可变类型
- #2. 不能保证原来的顺序
- # l=[
- # {
- 'name':'egon','age':18,'sex':'male'
- },
- # {
- 'name':'alex','age':73,'sex':'male'
- },
- # {
- 'name':'kevin','age':20,'sex':'female'
- },
- # {
- 'name':'egon','age':18,'sex':'male'
- },
- # {
- 'name':'egon','age':18,'sex':'male'
- },
- # ]
- # # print({
- 'name':'egon','age':18,'sex':'male'
- } in l)
- # l1=[]
- # for dic in l:
- # if dic not in l1:
- # l1.append(dic)
- # print(l1)
来源: http://www.bubuko.com/infodetail-2873144.html