![数据结构与算法(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=1739614256-AVPV0WxzVx5ErLyppJYhS63sTxmuMYQP-0-e5d257bd4c1b5580e66db99d8d63ed5f)
3.10.2 集合的操作
(1)创建集合
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_02.jpg?sign=1739614256-EUJ5YIkfUwdzz1GTm1JwbGwFTVqybkbx-0-c2e3b190bbd5210c74e52fa77018e61a)
重复的元素在set中被自动过滤,如下所示。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_03.jpg?sign=1739614256-IwdtKKk8qQKsLzvz71MnAkfjll31Vruw-0-0be5afaf8bfcbfb408fcf210c38541ee)
(2)访问集合
集合本身无序,无法进行索引和切片操作,只能使用in、not in或者循环遍历来访问或判断集合元素。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_04.jpg?sign=1739614256-H1TjZqd818FQ11jjTBu8BiGOyT9Tcfhk-0-e608028f8436abd296e08cec4fb3eb1e)
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_01.jpg?sign=1739614256-d5reIqZIShEff3Wl5IGRsgsgzvTeqnmU-0-edef0a3e3fce4f47b960948b463057fe)
(3)删除集合
使用del语句删除集合。举例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_02.jpg?sign=1739614256-b3g6HYXVuWcZAqd1pVU3OglYhrPoxiX3-0-f445e66e3a5fe90eea2cd19f33f7cda0)
(4)向集合中添加元素
使用add语句添加元素。举例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_03.jpg?sign=1739614256-To3ZMYPiWg32g03j9RwNaCTajs6jGjTC-0-57eac8e07741b8744506e9e782bee519)
(5)从集合中删除元素
从集合中删除元素有remove()、pop()、clear()等方法。
1)remove()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_04.jpg?sign=1739614256-jCG0dIKSXmAR9I0F9Wk5969xNvGzTdhP-0-1866eb1bbba4853ff0104af27e2bc7b6)
2)pop()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_05.jpg?sign=1739614256-Ctf2kD0BGGK3JlzGSHT2RBogR0D43hwI-0-fed0ae83d37628b9402139a0a501c036)
3)clear()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_06.jpg?sign=1739614256-bM1CDCtFOM2t6eqBXfULnsRrGYLZsPRN-0-76c30562bccaf5abb64699a624a31e9a)
3.10.3 集合运算
Python提供方法实现交、并、差集合运算。
1)差集:“-”用于求出两个集合的差集。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_01.jpg?sign=1739614256-yHZU6VmvA0taEPvREmMWqtBfTYZVHkXR-0-2ecf185ae2f6c6e8ecc6087ea7e30919)
3)交集:“&”用于求出两个集合的交集。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_02.jpg?sign=1739614256-Q9hKg9lg7IqingqoE10OHwwg8QMbYV5A-0-4a2c04ca42a0ba86806f758001675bca)
4)对称差集:“^”用于求出两个集合中不同时存在的元素。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_03.jpg?sign=1739614256-ReXbQxBS7PEa1quojYAbq2U0JLeIXQam-0-9f9feffa4c0e53fbc6faa7e4f6cf65e7)
【例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=1739614256-BcKagf41RpKwzaOvxO13GjLDyUgipB5r-0-695093372938c6b40189cb86ae018afa)
输出样例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_05.jpg?sign=1739614256-SncfmQC399p2CpOmqauYrQwnKCvTwrgW-0-ae81599bca15350aedb99aaa0e12db07)
【代码】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_58_01.jpg?sign=1739614256-aX5YKFxvq9CduwxkUYlpVwfaXydqMsU1-0-5bfd73dcc54b46f8eea0e79b0c22d68b)