![数据结构与算法(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=1739282304-F9QiOAfKuU1PJ3wXyrOfO00QpCEAQEiF-0-b128349baa5454627613b22768f6e629)
3.10.2 集合的操作
(1)创建集合
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_02.jpg?sign=1739282304-YSv16WP9n7noFuyCvLR09T7D5H8IOF7A-0-f70d45e8a9830b8283b0321bc16f0520)
重复的元素在set中被自动过滤,如下所示。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_03.jpg?sign=1739282304-dy5RP26Q84jspY8XCWnhgj8l18SlyGad-0-e9da73678d08c4fd347e427135e28868)
(2)访问集合
集合本身无序,无法进行索引和切片操作,只能使用in、not in或者循环遍历来访问或判断集合元素。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_55_04.jpg?sign=1739282304-4uUWzk3L0quUJ4AL5c5j7rvlFodjFzBp-0-a189acc7f68c077eab7aafeea11f3b37)
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_01.jpg?sign=1739282304-PCiPAOBoPgEuinP75NzIYSVRoHDg1rMy-0-a0fd8e4ea1d950cc4af1567dceb4bc4a)
(3)删除集合
使用del语句删除集合。举例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_02.jpg?sign=1739282304-ExcdJKV7lxW0AQ7ssEviUymH9zPwtRTc-0-231b3d997cea23b231b73067cec1611c)
(4)向集合中添加元素
使用add语句添加元素。举例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_03.jpg?sign=1739282304-3BCYynTdBN3GZKfTVYsYCyU7l8hNPvCg-0-13ac53b21151a3fa22db48f8101ffb14)
(5)从集合中删除元素
从集合中删除元素有remove()、pop()、clear()等方法。
1)remove()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_04.jpg?sign=1739282304-uC442SPpmDk2l451jrhZcKPsas0sOHjA-0-e29a8c9758e8cc174eb081983f3ef18e)
2)pop()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_05.jpg?sign=1739282304-gQtk6EmiA7MJW2jaNGfoA41DK7YNOFf4-0-41b7bf5d7913273def1616dc8a4addcd)
3)clear()方法。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_56_06.jpg?sign=1739282304-uY5QAA8Wq7QJuXxoBnxjG7r5u2pVJCIj-0-72654452ebe7e1574f9ae841d84eec37)
3.10.3 集合运算
Python提供方法实现交、并、差集合运算。
1)差集:“-”用于求出两个集合的差集。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_01.jpg?sign=1739282304-eZIXCclLaVGjB9aFpWFYPJxYgBBbmpHg-0-3d5fc29474ad6a3952be7c1a33a4751b)
3)交集:“&”用于求出两个集合的交集。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_02.jpg?sign=1739282304-6C5wM0tErOJspXCLoVFncTM6XPEo6a8r-0-a5c9cb0a24db8eba261b4cfaec66a745)
4)对称差集:“^”用于求出两个集合中不同时存在的元素。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_03.jpg?sign=1739282304-UeTCKeAmQy3QmNNHurIok4yXQt4YVyiq-0-1ec62f73182449cbcee0f425e9cee89c)
【例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=1739282304-Z5QbTBqwo4RRn8JKxIJaU2Nx9eci0JVL-0-1e843e27ad48c1db512e477beb850db0)
输出样例如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_57_05.jpg?sign=1739282304-5AaE5lGdE6wMpm4qoaFPqosziTGtW055-0-c96e58134d64f52c8bea36c2fd102a69)
【代码】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_58_01.jpg?sign=1739282304-HyLJUOuNVoKwKoeX3uY209zuDzFsAJH4-0-f7c64825f7eaa740e0e26c4b84524f73)