![数据结构与算法(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=1739407616-W36hOwtG7bQhW4r5xD9Rok7ZM3EsEcmU-0-3ec03933a12f88f720536a8ca151e6b1)
3.10.2 集合的操作
(1)创建集合
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_02.jpg?sign=1739407616-p61PwN2Owvv3ojdav1yCQYLB08tdpRyq-0-fc4d767aac13bc3c9cf66e36222cc7ea)
重复的元素在set中被自动过滤,如下所示。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_03.jpg?sign=1739407616-tS10hEvpNf0YdxGKuiDnnQVFBnM8QQwP-0-0709b33180346e9b514227bddaa887e8)
(2)访问集合
集合本身无序,无法进行索引和切片操作,只能使用in、not in或者循环遍历来访问或判断集合元素。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_04.jpg?sign=1739407616-KpaTV6JRCSUNdOyyN2cYm7GyGrkPVq3u-0-11d3eeb0c8cc954ad4b7f27fc4398167)
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_01.jpg?sign=1739407616-iuE1idMdlXcuTJ0ayIbKYPlk3rXvveeA-0-f1a9b7b248c6d116c1d9c580f51a44ac)
(3)删除集合
使用del语句删除集合。举例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_02.jpg?sign=1739407616-4U1sov5KTD5iaHMfrmByIZQozf8r3Al6-0-ec8ff0b785d00f2820f1394a065d0769)
(4)向集合中添加元素
使用add语句添加元素。举例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_03.jpg?sign=1739407616-gplDq9NdCp6XKSCYcTH39yYNYlxPzkjy-0-2ffed62a80be6973015eae0f9da96be7)
(5)从集合中删除元素
从集合中删除元素有remove()、pop()、clear()等方法。
1)remove()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_04.jpg?sign=1739407616-fiqhgq2dXW6zGir9fL7Hp5aOpBmrEENv-0-379db1ce3aa78df184d291250455bcfc)
2)pop()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_05.jpg?sign=1739407616-z92Dc5ywvi6Ao6T7tu0b60vfxeu64nhc-0-200af51da2be587cd749eb31808d7ae3)
3)clear()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_06.jpg?sign=1739407616-EP1dkbDGPN5ti1cwyUpySU3J1crKVJZr-0-1d08a7a747907f3288f56259077dfe0e)
3.10.3 集合运算
Python提供方法实现交、并、差集合运算。
1)差集:“-”用于求出两个集合的差集。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_01.jpg?sign=1739407616-ax99B9IYy8Ys0XVJHyzgH1CFsjHFcHhA-0-c8b4b57979234b761bff24fdd6e247aa)
3)交集:“&”用于求出两个集合的交集。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_02.jpg?sign=1739407616-EzRq9HENiRSREn53QWcjkGwJWEUnPCxL-0-e57c6f06efa32900d66667cef5240bb9)
4)对称差集:“^”用于求出两个集合中不同时存在的元素。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_03.jpg?sign=1739407616-KImT4ODXQjPzoLhufA3JfG4BuN2vTxsH-0-2cc563df9c6a2a9d77b71dc9321cce7a)
【例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=1739407616-Mez8qEdVwB0U408YvlNLpPuEq6lXLO9L-0-9424d2b982049ab1922156b92206d9c2)
输出样例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_05.jpg?sign=1739407616-GTz1GqB6QK48TNWJRXLc7loRkZGy7kLs-0-1dcd266377d8912c215e5a205a961d0f)
【代码】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_58_01.jpg?sign=1739407616-Qp0G26YePqbTqEEsUKjPTJIKuL2KiNxr-0-59b3d95e7fb3e15a222e6ea5c99a98b9)