跳到主要内容

Python 数据类型详细篇:集合

这节课是数据类型篇最后一节了,这节课我们来讲下集合数据类型,集合这个数据类型很特殊,到底是个怎么特殊法,下面我们一起来看下:

1. 简介

1.1 定义

集合是一个无序、不重复的序列,集合中所有的元素放在 {} 中间,并用逗号分开,例如:

  • {1, 2, 3},一个包含 3 个整数的列表
  • {‘a’, ‘b’, ‘c’},一个包含 3 个字符串的列表

1.2 集合与列表的区别

在 Python 中,集合与列表的区别如下:

  • 列表中的元素允许重复,集合中的元素不允许重复,示例如下:
>>> x = {1, 1, 2, 3}
>>> x
{1, 2, 3}

在以上程序中,元素 1 被重复了 2 次,在创建集合时,重复的元素被合并成一个。

  • 列表是有序的,提供了索引操作,集合是无序的,没有索引操作,示例如下
>>> x = {1, 2, 3}
>>> x[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing

在以上程序中,试图使用索引操作符访问集合的第 0 项元素。集合是无序的,不提供索引操作,运行时出错,提示: ‘set’ object does not support indexing。

2. 常见运算操作

本节介绍对集合的最常见的几种运算操作,包括:

2.1 运算符 |

使用运算符 | 合并两个集合,示例如下:

>>> {1, 2} | {3, 4}
{1, 2, 3, 4}
>>> {1, 2} | {3, 4} | {5, 6}
{1, 2, 3, 4, 5, 6}

  • 在第 1 行,使用运算符 | 合并两个集合
  • 在第 3 行,使用运算符 | 合并多个集合

2.2 运算符 -

使用运算符 - 从集合中删除元素,示例如下:

>>> {1, 2, 3, 4} - {3, 4}
{1, 2}

  • 在第 1 行,使用运算符 - 从集合 {1, 2, 3, 4} 中删除集合 {3, 4} 包含的元素

2.3 关键字 in

通过关键字 in 检查集合中是否包含指定元素,示例如下:

>>> 'imooc' in {'www', 'imooc', 'com'}
True
>>> 'mooc' in {'www', 'imooc', 'com'}
False

  • 在第 1 行,检测字符串 ‘imooc’ 在集合中
  • 在第 3 行,检测字符串 ‘mooc’ 不在集合中

3. 常见函数

3.1 len(set) 函数

使用函数 len 获取集合的长度,示例如下:

>>> len({1, 2, 3})
3
>>> len({1, 2, 3, 4})
4

3.2 max(set) 函数

使用函数 max 获取集合中最大的元素,示例如下:

>>> max({1, 2})
2
>>> max({1, 3, 2})
3

3.3 min(set) 函数

使用函数 min 获取集合中最小的元素,示例如下:

>>> min({1, 2})
1
>>> min({1, 3, 2})
1

4. 常见方法

4.1 add(item) 方法

add(item) 方法向集合中新增一个元素 item,示例如下:

>>> x = {1, 2, 3}
>>> x.add(4)
>>> x
{1, 2, 3, 4}

  • 在第 2 行,使用 add 方法向集合中新增一个元素 4
  • 在第 4 行,显示列表中已经增加了一个元素

4.2 remove(item) 方法

remove(item) 方法从集合中删除指定元素 item,示例如下:

>>> x = {'www', 'imooc', 'com'}
>>> x.remove('imooc')
>>> x
{'www', 'com'}

  • 在第 2 行,使用 remove 方法从集合中删除一个元素 ‘imooc’
  • 在第 4 行,显示列表中已经删除了一个元素

4.3 clear() 方法

clear() 方法移除集合中的所有元素,示例如下:

>>> x = {1, 2, 3}
>>> x
{1, 2, 3}
>>> x.clear()
>>> x
set()

  • 在第 1 行,创建了一个包含 3 个元素的集合
  • 在第 4 行,使用 clear() 方法移除集合中的所有元素
  • 在第 5 行,显示集合,结果表明所有元素都被删除了

4.4 union() 方法

union() 方法返回两个集合的并集,示例如下:

>>> x = {1, 2, 3}
>>> y = {4, 5, 6}
>>> z = x.union(y)
>>> z
{1, 2, 3, 4, 5, 6}

  • 在第 3 行,使用 union() 方法返回集合 x 和集合 y 的并集
  • 在第 4 行,显示两个集合的并集

4.5 intersection() 方法

intersection() 方法返回两个集合的交集,示例如下:

>>> x = {1, 2, 3}
>>> y = {2, 3, 4}
>>> z = x.intersection(y)
>>> z
{2, 3}

  • 在第 3 行,使用 intersection() 方法返回集合 x 和集合 y 的交集
  • 在第 4 行,显示两个集合的交集

4.6 issubset() 方法

issubset() 方法判断指定集合是否为子集,示例如下:

>>> x = {1, 2, 3}
>>> y = {1, 2}
>>> y.isubset(x)
True

  • 在第 3 行,使用 issubset() 方法判断集合 y 是否为集合 x 的子集
  • 在第 4 行,结果表明集合 {1, 2} 是集合 {1, 2, 3} 的子集

4.7 issuperset() 方法

issuperset() 方法判断指定集合是否为超集,示例如下:

>>> x = {1, 2, 3}
>>> y = {1, 2}
>>> x.isuperset(y)
True

  • 在第 3 行,使用 issuperset() 方法判断集合 x 是否为集合 y 的超集
  • 在第 4 行,结果表明集合 {1, 2, 3} 是集合 {1, 2} 的超集

5. 小结

集合不存在重复元素这一特性能用来干的事情非常多。比如说一个学校要把全校所有学生的信息录入到系统中,为了避免某一学生的信息重复录入只需要把信息存入集合就可以避免这一错误。