4.2 集合类型

微视频

本节重点讲解集合类型的概念和基本操作。

4.2.1 认识集合类型

集合(Sets)是一个无序不重复元素的集。它的主要功能是自动清除重复的元素。创建集合时用大括号({})来包含其元素。

例如下面的代码运行结果:

    >>>books = {'Python 入门很轻松', 'C 语言入门很轻松','Java 入门很轻松'}
    >>>print(books)                                      #输出集合的内容
    {'Python 入门很轻松', 'Java 入门很轻松', 'C 语言入门很轻松'}

从结果可以看出,集合输出是无序的,并没有按赋值时的顺序输出。

如果集合中有重复的元素,就会自动将其删除。

例如下面的代码及运行结果:

    >>>books = {'Python 入门很轻松', 'C 语言入门很轻松','Python 入门很轻松'}
    >>>print(goods)                                      #删除重复的
    {'Python 入门很轻松','C 语言入门很轻松'}

大牛提醒

如果要创建一个空集合,必须使用set()函数。例如:

    books = set()  #正确创建空集合的方式
    books = { }    #错误创建空集合的方式

4.2.2 集合类型的常见操作

集合类型的常见操作有添加元素、移除元素、计算集合元素个数、清空集合。

1.添加元素

添加元素的语法格式如下:

    s.add( x )

将元素x添加到集合s中,如果元素已存在,则不进行任何操作。

例如下面的代码及运行结果:

    >>>fruits = {"苹果", "香蕉", "橘子"}
    >>>fruits.add("荔枝")                 #添加新元素
    >>>fruits
    {'苹果', '香蕉', '荔枝', '橘子'}
    >>>fruits.add("苹果")                 #添加集合中已经存在的元素
    >>>fruits
    {'苹果', '香蕉', '荔枝', '橘子'}
2.移除元素

移除元素的语法格式如下:

    s.remove( x )

将元素x从集合s中移除,如果元素不存在,则会发生错误。

例如下面的代码及运行结果:

    >>>fruits = {"苹果", "香蕉", "橘子"}
    >>>fruits.remove("苹果")                  #移除元素
    >>>fruits
    {'香蕉', '橘子'}
    >>>fruits.remove("苹果")                  #移除不存在的元素,将会报错
    Traceback (most recent call last):
      File "<pyshell#21>", line 1, in <module>
        fruits.remove("苹果")
    KeyError: '苹果'
3.计算集合元素个数

计算集合元素个数的语法格式如下:

    len(s)

这里是计算集合s元素个数。

例如下面的代码及运行结果:

    >>>fruits = {"苹果", "香蕉", "橘子"}
    >>>len(fruits)
    3
4.清空集合

清空集合的语法格式如下:

    s.clear()

这里是清空集合s。

    >>>fruits = {"苹果", "香蕉", "橘子"}
    >>>fruits.clear()
    >>>fruits
    set()

【例4.1】创建公司各部门的人员信息,并进行更改和运算(源代码\ch04\4.1.py)。

    print ("欢迎进入企业人员查询系统")
    sales = {"张锋", "张磊", "王天", "冯永"}       #报存营销部的人员
    admini = {"王天", "冯永", "张淼", "蔡玲"}      #报存管理部的人员
    print ("营销部的人员有:", sales, "\n")        #输出营销部的人员
    print ("管理部的人员有:", admini, "\n")       #输出管理部的人员
    print ("交集运算:", sales&admini, "\n")       #输出既在营销部又在管理部的人员
    print ("并集运算:", sales|admini, "\n")       #输出营销部和管理部的所有人员
    print ("差集运算:", sales-admini, "\n")       #输出营销部但不在管理部的人员
    sales.add("张小龙")                            #营销部添加新人
    admini.remove("王天")                          #管理部有人离职
    print ("最新营销部的人员有:", sales, "\n")    #输出营销部更改后的人员
    print ("最新管理部的人员有:", admini, "\n")   #输出管理部更改后的人员

程序运行结果如图4-1所示。

图4-1 例4.1的程序运行结果