![数据结构与算法(Python版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/974/41864974/b_41864974.jpg)
上QQ阅读APP看书,第一时间看更新
3.10 集合
3.10.1 集合的概念
集合(Set)是一个无序、不重复元素集,基本功能包括关系测试和消除重复元素。集合有如下一些方法,如表3.14所示。
表3.14 集合的方法
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_01.jpg?sign=1739157738-mgU99kyRxFt9t1bRKutSDmmsnu9LnoBG-0-c164c9abc00e0fecdf9f476a1755c8cc)
3.10.2 集合的操作
(1)创建集合
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_02.jpg?sign=1739157738-FZOgMlEHKDgqlm2tbwMSkVkR2v1HIRK4-0-3470417dfe1234d05ea3a7b1af6d13e5)
重复的元素在set中被自动过滤,如下所示。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_03.jpg?sign=1739157738-OBjeH5pHiGwneX33jiGnpvuSyUBMBl7B-0-f9a10dd20c8da4fa1bd1843125a8181f)
(2)访问集合
集合本身无序,无法进行索引和切片操作,只能使用in、not in或者循环遍历来访问或判断集合元素。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_04.jpg?sign=1739157738-VUFH0gr6zeKqDDu0SCh8g7Kh1hNL5mke-0-42d965b52beafbcdaedc2c28a5e40ce5)
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_01.jpg?sign=1739157738-4a1VkazpGJqOFWa9HoLleoCw8PAukVCX-0-292515b03f72be479056369c72862802)
(3)删除集合
使用del语句删除集合。举例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_02.jpg?sign=1739157738-Yu6HQcRaNAbDfbgyqZ6kcVFtWh8MTmjS-0-96a1739e932a9b7328c94fe6221c98e4)
(4)向集合中添加元素
使用add语句添加元素。举例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_03.jpg?sign=1739157738-MeU2w949NLanCpSE21nby2rrF2iI5xrZ-0-5ef2f26f649b64cdb9774ee3d80e1c15)
(5)从集合中删除元素
从集合中删除元素有remove()、pop()、clear()等方法。
1)remove()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_04.jpg?sign=1739157738-MUKrG5kXTsyBoCyLj4zSbjcRzyCeiXAI-0-d740b508aa2280a2e3bc1e96248bd630)
2)pop()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_05.jpg?sign=1739157738-WsxZ6QcMv4eCXWgTjEU2C1BQxCpdXwP7-0-0e2497baba627886646d9a3f4e1de020)
3)clear()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_06.jpg?sign=1739157738-Q58Ig87YEi00tM5iPRZnoEkHxG6tPc8R-0-09851fea8878f4f47cb2b5be579771db)
3.10.3 集合运算
Python提供方法实现交、并、差集合运算。
1)差集:“-”用于求出两个集合的差集。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_01.jpg?sign=1739157738-IBC6GrBr6OLM9R7pEseBS7MdwVxrPLa7-0-a0a2d30c153c2717c4db90e60a06b74e)
3)交集:“&”用于求出两个集合的交集。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_02.jpg?sign=1739157738-ZQnvw904fRCRPSeYRuQUNYjVcZby7JOu-0-7789a6fa1169c73d5f2a327a3f21a633)
4)对称差集:“^”用于求出两个集合中不同时存在的元素。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_03.jpg?sign=1739157738-M8s8OR1VlQ9Ocy8Od0h0OU334FXNDZ8P-0-fea9fca7e83f14709b8a726deecffaa2)
【例3-15】每一个列表中只要有一个元素出现两次,那么该列表即被判定为包含重复元素。编写函数判定列表中是否包含重复元素,如果包含重复元素,返回True,否则返回False。然后使用该函数对n行字符串进行处理。最后分别统计包含重复元素与不包含重复元素的行数。
输入格式如下。
输入n,代表接下来要输入n行字符串。
然后输入n行字符串,字符串之间的元素以空格相分隔。
输出格式如下。
True=包含重复元素的行数,False=不包含重复元素的行数。
输入样例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_04.jpg?sign=1739157738-t7LOzwW1LbsD98LP91gbrm8lIC6qSW9X-0-27e6d94f289d076e562058b54c04d6a8)
输出样例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_05.jpg?sign=1739157738-xGn6oSbpaBJWZTUheYlWogiu1AlznCn1-0-b8e1dbf5b285dae151e31e87ec311797)
【代码】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_58_01.jpg?sign=1739157738-4r8GIaqkbs9TTQA7VQMA333oBNlkoXpB-0-479516cda1b399cb762fb9a1f225ab77)