博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Python3] 014 集合的内置方法
阅读量:5074 次
发布时间:2019-06-12

本文共 5422 字,大约阅读时间需要 18 分钟。

目录


1. Python3 中如何查看 set() 的内置方法

  1. help(set()) / help(set)
  2. dir(set()) / dir(set)

2. 少废话,上例子

(1) add()

  • 释义:
  1. 向集合中添加一个元素
  2. 若元素已经存在,则此操作无效
  • 示例:
# 例1.1 向集合内添加元素s1_1 = {1}s1_1.add(2)print(s1_1)
  • 运行结果

{1, 2}


# 例1.2s1_2 = {1}s1_2.add(3, 4)
  • 运行结果

TypeError……add() takes exactly one argument (2 given)

报错原因:add() 只能加一个元素。

想要一次加入多个元素请看 (17) update()。


# 例1.3s1_3 = {1, 2, 3}s1_3.add(2)print(s1_3)
  • 运行结果

{1, 2, 3}

加入一个已有的元素不报错。


(2) 又见清理大师 clear()

  • 释义:
  1. 删除集合中所有的元素
  • 示例:
# 例2s2 = {1,2,3,4,5}print(s2)print(id(s2))s2.clear()print(s2)print(id(s2))
  • 运行结果

{1, 2, 3, 4, 5}

2229866605480

set()

2229866605480

id() 显示 clear() 是原地清空。

列表被清空后仅输出 [],集合被清空后输出 set()。


(3) 又见拷贝君 copy()

  • 释义:
  1. 返回集合的浅拷贝
  2. 关于深拷贝与浅拷贝,之前挖过坑,编号 Py006-3
  • 示例:
# 例3s3_1 = {1, 2, 3, 4, 5}s3_2 = s3_1.copy()print(s3_1)print(id(s3_1))print(s3_2)print(id(s3_2))
  • 运行结果

{1, 2, 3, 4, 5}

2229867508456

{1, 2, 3, 4, 5}

2229868024776


(4) 找茬君 difference()

  • 释义:
  1. 将两个或多个集合的差异作为新集合返回
  2. 所有返回的元素都是基于使用 difference() 的那个集合(不是 difference() 括号中的那个集合)
  • 示例:
# 例4s4_1 = {1, 2, 3}s4_2 = {0, 1, 2, 3, 4}s4_3 = {6, 7, 8, 9}s4_4 = {2}s4_5 = {3, 4}print(s4_1.difference(s4_2))print(s4_1.difference(s4_3))print(s4_1.difference(s4_4))print(s4_1.difference(s4_5))print(s4_1.difference(s4_4, s4_5))print(s4_1.difference(s4_3, s4_4, s4_5))
  • 运行结果

set()

{1, 2, 3}

{1, 3}

{1, 2}

{1}

{1}

从结果看:

  1. 若 A 是 B 的子集,则 A.difference(B) 输出 set()
  2. 若 A 与 B 没有交集,则 A.difference(B) 输出 A 本身
  3. 若 B 是 A 的子集,则 A.difference(B) 输出 A 中与 B 不同的元素,并用大括号括起来
  4. 若 A 与 B 有交集,又各自有不同的元素,则 A.difference(B) 是将 A 中除去 A 与 B 的交集后的元素输出,并用大括号括起来
  5. A 可以与 (B1, B2, ……, Bn) 使用 difference(),先求 (B1, B2, ……, Bn) 的并集,再按上面 1~4 运行
  6. 感觉像是在做概率论中的古典概型

(5) difference_update()

  • 释义:
  1. 从此集合中移除所有与其他集合重复的元素
  • 示例:
# 例5s5_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s5_2 = {"John Diggle", "Dinah Drake", "Constantine"}s5_1.difference_update(s5_2)print(s5_1)
  • 运行结果

{'YorkFish', 'Felicity Smoak'}

difference_update() 是更新原集合;

difference() 是返回值。


(6) discard()

  • 释义:
  1. 如果元素是是集合的成员,则将其从集合中移除
  2. 如果元素不是集合的成员,则不执行任何操作
  • 示例:
# 例6s6 = {1, 2, 3, 4, 5}s6.discard(1)print(s6)s6.discard(6)print(s6)
  • 运行结果

{2, 3, 4, 5}

{2, 3, 4, 5}


(7) intersection()

  • 释义:
  1. 将两个集合的交集作为新集合返回
  • 示例:
# 例7s7_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s7_2 = {"John Diggle", "Dinah Drake", "Constantine"}s7_3 = s7_1.intersection(s7_2)print(s7_3)
  • 运行结果

{'Dinah Drake'}


(8) intersection_update()

  • 释义:
  1. 用自身和另一个集合的交集更新集合
  • 示例:
# 例8s8_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s8_2 = {"John Diggle", "Dinah Drake", "Constantine"}s8_1.intersection_update(s8_2)s8_3 = s8_1.intersection_update(s8_2)print(s8_1)print(s8_3)
  • 运行结果

{'Dinah Drake'}

None

s8_3 接收到的 None 应该是 intersection_update() 返回的。


(9) isdisjoint()

  • 释义:
  1. 如果两个集合的交集为空集,则返回 True;否则,返回 False
  • 示例:
# 例9s9_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s9_2 = {"John Diggle", "Dinah Drake", "Constantine"}s9_3 = {"Rorschach", "Comedian", "Nite Owl II"}print(s9_1.isdisjoint(s9_2))print(s9_1.isdisjoint(s9_3))
  • 运行结果

False

True


(10) issubset()

  • 释义:
  1. 形如 A.issubset(B) 时,如果集合 A 是集合 B 的子集,则返回 True;否则,返回 False
  • 示例:
# 例10s10_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s10_2 = {"Dinah Drake", "Felicity Smoak"}s10_3 = {"Rorschach", "Comedian", "Nite Owl II"}print(s10_2.issubset(s10_1))print(s10_3.issubset(s10_1))
  • 运行结果

True

False


(11) issuperset()

  • 释义:
  1. 与 issubset() 相反
  2. 形如 A.issuperset(B) 时,如果集合 A 是集合 B 的超集,则返回 True;否则,返回 False
  • 示例:
# 例11s11_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s11_2 = {"Dinah Drake", "Felicity Smoak"}s11_3 = {"Rorschach", "Comedian", "Nite Owl II"}print(s11_1.issuperset(s11_2))print(s11_1.issuperset(s11_3))
  • 运行结果

True

False


(12) 又见 pop()

  • 释义:
  1. 删除并且返回集合中的一个元素
  2. 如果集合为空,则抛出异常 KeyError (关于异常,挖个坑,日后填平,编号 Py014-1)
  3. 与列表不同,集合的 pop() 从某种程度上说是随机的
  • 示例:
# 例12s12_1 = {1, 2, 3, 4, 5, 6}s12_2 = s12_1.pop()print(s12_2)print(s12_1)
  • 运行结果

1

{2, 3, 4, 5, 6}


(13) 又见 remove()

  • 释义:
  1. 从集合中删除元素;但它必须是该集合的成员
  2. 如果需要删除的元素不是该集合的成员,则抛出异常 keyError
  • 示例:
# 例13.1s13_1 = {1, 2, 3, 4, 5}s13_2 = s13_1.remove(1)print(s13_2)print(s13_1)
  • 运行结果

None

{2, 3, 4, 5}


# 例13.2 接着例13.1s13_3 = s13_1.remove(2, 3)print(s13_3)
  • 运行结果

TypeError……remove() takes exactly one argument (2 given)

remove() 一次只接收一个参数,给多了不行。


(14) symmetric_difference()

  • 释义:
  1. 将两个集合的“对等差分”作为新集合返回
  2. 对等差分:不重复部分
  • 示例:
# 例14s14_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s14_2 = {"John Diggle", "Dinah Drake", "Constantine"}s14_3 = s14_1.symmetric_difference(s14_2)print(s14_3)
  • 运行结果

{'Felicity Smoak', 'John Diggle', 'Constantine', 'YorkFish'}


(15) symmetric_difference_update()

  • 释义:
  1. 使用自身和另一个集合的“对等差分”更新集合
  • 示例:
# 例15s15_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s15_2 = {"John Diggle", "Dinah Drake", "Constantine"}s15_1.symmetric_difference_update(s15_2)    # 此处与 symmetric_difference() 有别print(s15_3)
  • 运行结果

{'John Diggle', 'Felicity Smoak', 'Constantine', 'YorkFish'}

symmetric_difference() 是将对等差分返回给一个新的集合;

symmetric_difference_update() 是用对等差分更新原有集合。


(16) union()

  • 释义:
  1. 将集合的并集作为新的集合返回
  • 示例:
# 例16s16_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s16_2 = {"John Diggle", "Dinah Drake", "Constantine"}s16_3 = s16_1.union(s16_2)print(s16_3)
  • 运行结果

{'John Diggle', 'YorkFish', 'Dinah Drake', 'Constantine', 'Felicity Smoak'}


(17) update()

  • 释义:
  1. 使用自身和其他集合的并集更新集合
  • 示例:
# 例17s17_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}s17_2 = {"John Diggle", "Dinah Drake", "Constantine"}s17_1.update(s17_2)print(s17_1)
  • 运行结果

{'Constantine', 'Felicity Smoak', 'John Diggle', 'Dinah Drake', 'YorkFish'}


update() 与 union() 的区别就像 symmetric_difference_update() 与 symmetric_difference() 的区别。

update() 是更新原有的集合;

union() 是将结果返回给一个新的集合。

转载于:https://www.cnblogs.com/yorkyu/p/10290677.html

你可能感兴趣的文章
Introduction to my galaxy engine 2: Depth of field
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>
数据中心虚拟化技术
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
Abstract Factory Pattern
查看>>
list 容器 排序函数.xml
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>