语法结构:  set1.issubset(set2)
判断集合set1是否为set2的子集,返回布尔值。

1
2
3
4
5
6
s1 = {'Java', 'PHP', 'Python', 'C++'}
s2 = {'Java', 'Shell', 'Ruby'}
print(s1.issubset(s2))
 
输出:
False
  • issuperset()
    语法结构:  set1.issuperset(set2)
    判断set1是否为set2的父集。

    1
    2
    3
    4
    5
    6
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'C++'}
    print(s1.issuperset(s2))
     
    输出:
    True
  • isdisjoint()
    语法结构:  set1.isdisjoint(set2)
    判断set1和set2是否存在交集, 如果不存在返回True, 存在则返回False.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'C++'}
    s3 = {'GO'}
    print(s1.isdisjoint(s2))
    print(s1.isdisjoint(s3))
     
    输出:
    False
    True
  • symmetric_difference()
    语法结构:set1.symmetric_difference(set2)或set1 ^ set2
    返回set1和set2的对称式差集,相当于执行set1.difference(set2)和set2.difference(set1),以新的set集合形式返回set1和set2中差异部分元素(不在两者中同时存在)集合(仅在set1和set2中出现过一次的元素不影响原set1和set2)。
    1
    2
    3
    4
    5
    6
    7
    8
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    print(s1.symmetric_difference(s2))
    print(s1 ^ s2)
     
    输出:
    {'PHP', 'Ruby', 'Shell', 'C++', 'Python'}
    {'PHP', 'Ruby', 'Shell', 'C++', 'Python'}
  • symmetric_difference_update()
    语法结构:set1.symmetric_difference(set2)
    返回set1和set2的对称式差集,并覆盖更新原set1集合(原来被调用操作的对象),即执行set1 = set1.symmetric_difference(set2)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    print(s1.symmetric_difference(s2))
    s1.symmetric_difference_update(s2)
    print(s1)
     
    输出:
    {'PHP', 'C++', 'Shell', 'Python', 'Ruby'}
    {'Python', 'Shell', 'Ruby', 'PHP', 'C++'}
  • intersection()
    语法结构:  set1.intersection(set2)或set1 & set2
    交集运算,以set方式返回set1和set2的交集部分(同时存在的元素),不影响原集合set1和set2.
    1
    2
    3
    4
    5
    6
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    print(s1.intersection(s2))
     
    输出:
    {'Java'}
  • intersection_update()
    语法结构:  set1.intersection_update(set2)
    执行交集运算,并将结果覆盖更新原集合set1(原来被调用操作的对象)。
    1
    2
    3
    4
    5
    6
    7
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    s1.intersection_update(s2)
    print(s1)
     
    输出:
    {'Java'}
  • union()
    语法结构:  set1.union(set2)或set1 | set2
    执行并集计算,合并set1和set2中的对象并做去重处理,最后以集合形式返回结果。
    综合上述关系运算函数,可确定并集计算相当于对称差集与交集的并集计算,即合并重复重现的对象和不重复出现的对象,set1.union(set2) = (set1.symmetric_difference(set2)).union(set1.intersection(set2))
    1
    2
    3
    4
    5
    6
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    print(s1.union(s2))
     
    输出:
    {'Shell', 'PHP', 'Ruby', 'C++', 'Python', 'Java'}
  • update()
    语法结构:  set1.update(obj)
    往集合中批量添加元素,添加的对象必须是可以迭代的对象(当然如果原集合中存在与迭代对象中重复的元素会做去重处理),本质上是通过循环,把传入的迭代对象逐个添加更新到原集合中。
    1
    2
    3
    4
    5
    6
    7
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    s1.update(s2)
    print(s1)
     
    输出:
    {'Python', 'Ruby', 'Shell', 'C++', 'Java', 'PHP'}
  • in 或not in
    成员运算函数同样适用于集合,最后返回布尔值。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    print('Java' in s1)
    if 'Go' in s1:
        print("OK")
    else:
        print("Not OK")
     
    输出:
    True
    Not OK
  • <=
    语法结构:  set1 <= set2
    判断set1中的每个元素是否都在set2中,即判断set1是否为set2的子集,等同于set1.issubset(set2)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    s3 = s1.union(s2)
    print(s1 <= s2)
    print(s1.issubset(s2))
    print(s1 <= s3)
    print(s1.issubset(s3))
     
    输出:
    False
    False
    True
    True

3.3 关系测试运算符

  常见的关系测试运算符如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
s1 = {'Java', 'PHP', 'Python', 'C++'}
s2 = {'Java', 'Shell', 'Ruby'}
print(s1 - s2)
print(s1.difference(s2))
print("")
print(s1 & s2)
print(s1.intersection(s2))
print("")
print(s1 | s2)
print(s1.union(s2))
print("")
print(s1 ^ s2)
print(s1.symmetric_difference(s2))
print("")
print(s1 <= s2)
print(s1.issubset(s2))
 
输出:
{'C++', 'PHP', 'Python'}
{'C++', 'PHP', 'Python'}
 
{'Java'}
{'Java'}
 
{'C++', 'Python', 'Shell', 'Ruby', 'Java', 'PHP'}
{'C++', 'Python', 'Shell', 'Ruby', 'Java', 'PHP'}
 
{'C++', 'Shell', 'Python', 'Ruby', 'PHP'}
{'C++', 'Shell', 'Python', 'Ruby', 'PHP'}<br><br>False<br>False

Python学习之路【第三篇】--集合的更多相关文章

  1. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  2. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  3. python学习之路网络编程篇(第三篇)

    python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python # -*- coding:utf-8 -*- import t ...

  4. python成长之路第三篇(1)_初识函数

    目录: 函数 为什么要使用函数 什么是函数 函数的返回值 文档化函数 函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多 ...

  5. python成长之路第三篇(3)_内置函数及生成器迭代器

    打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.lambda表达式 2.map内置函数 3.filter内置函数 4.reduce内置函数 5.yield生成器 ...

  6. python成长之路第三篇(4)_作用域,递归,模块,内置模块(os,ConfigParser,hashlib),with文件操作

    打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.作用域 2.递归 3.模块介绍 4.内置模块-OS 5.内置模块-ConfigParser 6.内置模块-has ...

  7. Python人工智能之路 - 第三篇 : PyAudio 实现录音 自动化交互实现问答

    Python 很强大其原因就是因为它庞大的三方库 , 资源是非常的丰富 , 当然也不会缺少关于音频的库 关于音频, PyAudio 这个库, 可以实现开启麦克风录音, 可以播放音频文件等等,此刻我们不 ...

  8. 大数据萌新的Python学习之路(三)

    笔记内容:  一.集合及其运算 在之列表中我们可以存储数据,并且对数据进行各种各样的操作.但是如果我们想要对数据进行去重时是十分麻烦的,需要使用循环,要建立新的列表,还要 进行对比,十分的麻烦,还消耗 ...

  9. python成长之路第三篇(2)_正则表达式

    打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.什么是正则表达式,python中得正则简介 2.re模块的内容 3.小练习 一.什么是正则表达式(re) 正则表 ...

  10. python学习之路网络编程篇(第二篇)

    新课程知识的引入:python作用域 #python中无块级别作用域 if 1 == 1 : name = 'alex' print(name) for i in range(10): name = ...

随机推荐

  1. 在ETH交易区块链里查看北大的那封信

    本文仅限于科普编码知识使用,随便举的例子不代表本人立场. 欢迎在其他网站传播,但转载不得标注来源及作者. 1.随便打开一个ETH区块链浏览网站,比如:https://www.etherchain.or ...

  2. spoj IITWPC4F - Gopu and the Grid Problem 线段树

    IITWPC4F - Gopu and the Grid Problem no tags  Gopu is interested in the integer co-ordinates of the ...

  3. eclipse中启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误

    原因1:给定目录下jvm.dll不存在. 对策:(1)重新安装jre或者jdk并配置好环境变量.(2)copy一个jvm.dll放在该目录下. 原因2:eclipse的版本与jre或者jdk版本不一致 ...

  4. Asp.net core 学习笔记 (授权)

    更新 : 2018-11-24 记入一些思考 asp.net core + identity 的权限是这样的 user = 1 个登入账号 role = 1 个角色 (类似于公司里的一个职位) cla ...

  5. Day2-异步IO+Scrapy爬虫

    一.异步IO http://www.cnblogs.com/wupeiqi/articles/6229292.html 这篇文章写的不错,展示了多种高并发的方式,从同步执行→多线程→多进程→async ...

  6. 卡方分布 | t检验 | F检验 | 卡方检验 | 假设检验 | 各种检验持续总结

    Chi-square distribution introduction 这个视频真的好,完美地解释了卡方统计量是怎么来的! 我们有一个标准正态分布的总体,我们从其中抽一次,取该值的平方就是Q1统计量 ...

  7. 快速幂的求解-java方法(int范围之内)

    思想就是,将十进制数化成二进制数.其它就是很简单了. 如:2的11次幂,11的二进制位1011,所以2(11) = 2(2(0) + 2(1) + 2(3)); 具体实现步骤,看代码比较简单 impo ...

  8. Bitmap Byte[] 互转

    严正声明:作者:psklf出处: http://www.cnblogs.com/psklf/p/5889978.html欢迎转载,但未经作者同意,必须保留此段声明:必须在文章中给出原文连接:否则必究法 ...

  9. js时间字符串转为标准时间

    //将字符串转换为时间格式,适用各种浏览器,格式如2016-09-09T17:02:37.227"function GetTimeByTimeStr(dateString) { var ti ...

  10. Flex scroller皮肤的使用

    Flex4 scroller 自定义皮肤 十月 15, 2010 Posted by admin flex4里引入了sparkSkin, spark包里的可视控件可以通过指定skinClass的值来修 ...