购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.5
集合

Python中的集合同数学中的集合概念类似,也是用于保存不重复元素的,有可变集合(set)和不可变集合(frozen set)两种。本节所要介绍的可变集合是无序可变序列,而不可变集合在本书中不做介绍。在形式上,集合的所有元素都放在一对“{}”中,两个相邻元素间使用“,”分隔。

提示

在数学中,集合的定义是把一些能够确定的不同的对象看成一个整体,而这个整体就是由这些对象的全体构成的集合。集合通常用“{}”或者大写的拉丁字母表示。

集合最常用的操作就是创建集合,添加删除集合中的元素,以及集合的交集、并集和差集运算,下面分别进行介绍。

3.5.1 创建集合

在Python中提供了两种创建集合的方法:一种是直接使用“{}”创建,另一种是通过set()函数将列表、元组等可迭代对象转换为集合。

1.直接使用“{}”创建集合

在Python中,创建集合也可以像创建列表、元组和字典一样,直接将集合赋值给变量从而实现创建集合,即直接使用“{}”创建,语法格式如下:

    setname={element1,element2,element3,…,elementn}

参数说明:

● setname:表示集合的名称,可以是任何符合Python命名规则的标识符。

● elemnet1,elemnet2,elemnet3,…,elemnetn:表示集合中的元素,元素个数没有限制,只要是Python支持的数据类型就可以。

注意

在创建集合时,如果输入了重复的元素,Python会自动只保留一个。

【例3.47】分别使用不同类型的元素创建3个集合。

    set1={'水瓶座',"射手座","双鱼座","双子座"}
    set2={3,1,4,1,5,9,2,6}
    set3={'Python',28,('人生苦短',"我用Python")}

这段代码将创建以下集合:

    {'水瓶座',"射手座","双鱼座","双子座"}
    {3,4,1,5,9,2,6}
    {'Python',28,('人生苦短',"我用Python")}
提示

由于Python中的集合是无序的,所以每次输出时元素的排列顺序可能都不相同。

2.使用set()函数创建集合

在Python中,可以使用set()函数将列表、元组等其他可迭代对象转换为集合,其语法格式如下:

    setname=set(iteration)

参数说明:

● setname:表示集合名称。

● iteration:表示要转换为集合的可迭代对象,可以是列表、元组、range对象等,也可以是字符串。如果是字符串,返回的集合将是包含全部不重复字符的集合。

提示

在Python中,创建集合时推荐采用set()函数实现。

【例3.48】使用set函数创建集合。

    >>>x = set('runoob')
    >>> y = set('google')
    >>> x, y (set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))# 重复的被删除
    >>> x & y # 交集 set(['o'])
    >>> x | y # 并集 set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
    >>> x - y # 差集 set(['r', 'b', 'u', 'n'])

3.5.2 添加和删除集合元素

集合是可变序列,所以在创建集合后,还可以添加或者删除元素。

1.向集合中添加元素

向集合中添加元素可以使用add()方法实现,其语法格式如下:

    setname.add(element)

参数说明:

● setname:表示要添加元素的集合。

● element:表示要添加的元素内容,只能使用字符串、数字及布尔类型的True或者False等,不能使用列表、元组等可选代对象。

【例3.49】向集合中添加元素。

    fruits = {"apple", "banana", "cherry"}
 
    fruits.add("orange")
 
    print(fruits)

运行上面的代码,输出结果如下:

    {'cherry', 'orange', 'apple', 'banana'}
2.从集合中删除元素

在Python中,可以使用del命令删除整个集合,也可以使用集合的pop()方法或者remove()方法删除集合中的元素,或者使用集合对象的clear()方法清空集合,即删除集合中的全部元素,使其变为空集合。

【例3.50】从集合中删除元素。

    a = [0,1,2,3,4]
    b = a[0]
    del a[0] # 删除列表a中的第0个元素0
    print(a)

运行上面的代码,输出结果如下:

     [1,2,3,4]

3.5.3 集合的交集、并集和差集运算

集合最常用的操作就是进行交集、并集、差集和对称差集运算。进行交集运算时使用“&”符号,进行并集运算时使用“|”符号,进行差集运算时使用“-”符号,进行对称差集运算时使用“^”符号。

下面我们分别使用代码示例介绍集合的交集、并集、差集和对称差集运算。

1.交集
    >>> x={1,2,3,4}
    >>> y={3,4,5,6}
    >>> x
    set([1, 2, 3, 4])
    >>> y
    set([3, 4, 5, 6])
    >>> x&y
    set([3, 4])
    >>> x.intersection(y)
    set([3, 4])
2.并集
    >>> x | y # 集合并集
    set([1, 2, 3, 4, 5, 6])
    >>> x.union(y)
    set([1, 2, 3, 4, 5, 6])
3.差集
    >>> x-y # x与y的差集
    set([1, 2])
    >>> x.difference(y)# x与y的差集
    set([1, 2])
    >>> y-x # y与x的差集
    set([5, 6])
    >>> y.difference(x)# y与x的差集
    set([5, 6])
4.对称差集
    >>> x^y
    set([1, 2, 5, 6])
    >>> y^x
    set([1, 2, 5, 6])
    >>> x.symmetric_difference(y)
    set([1, 2, 5, 6])
    >>> y.symmetric_difference(x)
    set([1, 2, 5, 6])

3.5.4 列表、元组、字典和集合的区别

在3.2~3.5节介绍了序列中的列表、元组、字典和集合的应用,下面通过表3.1对这几个数据序列进行比较。

表3.1 列表、元组、字典和集合的区别 PzocPX4H3GMmPg5eoGFFqTPoCT7qVnTppdPcAdL47l4Fc4PptyutpEij+PsAZ8TR

点击中间区域
呼出菜单
上一章
目录
下一章
×