



在Python中,集合是一种可变的数据类型,它允许开发人员对其内部的元素动态地进行修改,常见的操作包括添加元素、删除元素和清空元素。下面分别对这些常见操作进行介绍。
add()或update()方法用于向集合中添加元素,不同的是,add()方法一次只能添加一个元素,而update()方法一次可以添加多个元素。这两个方法的语法格式如下:
上述格式中,add()方法需要接收一个元素,元素可以是字符串、数字类型、布尔类型的值,不可以是列表、元组等其他可迭代对象;update()方法需要接收一个可迭代对象,将可迭代对象遍历出的数据逐个添加到集合中。
注意: 因为集合不能包含重复元素,所以当使用add()或update()方法向集合内添加元素时,若当前集合已经存在这个元素,则不会进行添加操作。示例代码如下:
上述代码中,首先使用set()函数创建了一个空集合demo_set,其次使用add()方法向该集合中添加一个字符串类型的元素'py',接着使用update()方法向集合中添加元素。由于该方法的参数是一个字符串'thon',所以它会将字符串的每个字符添加到集合中;然后使用add()方法再次向该集合中添加一个字符串类型的元素'py',最后输出集合。
运行代码,结果如下:
Python中使用remove()方法、discard()方法和pop()方法删除集合中的元素,下面介绍这 3 个方法的具体功能。
remove()方法用于删除集合中的指定元素,若指定的元素不在集合中,则会导致程序出现KeyError错误。示例代码如下:
运行代码,结果如下:
discard()方法也可以删除指定的元素,但若指定的元素不存在,该方法不执行任何操作。示例代码如下:
运行代码,结果如下:
pop()方法用于随机删除集合中的一个元素。示例代码如下:
运行代码,结果如下:
如果需要清空集合中的元素,可以使用clear()方法实现。示例代码如下:
运行代码,结果如下:
Python支持通过操作符|、&、-、^对两个集合进行联合、交集、差补和对称差分操作。已知有set_a={'a', 'c'}和set_b={'b', 'c'},使用阴影部分表示这两个集合执行联合、交集、差补和对称差分操作的结果,如图5-2 所示。
图5-2 两个集合的操作
下面分别对集合的 4 种操作符进行介绍。
操作符“|”用于对两个集合进行联合操作,将两个集合的所有元素合并成一个新的集合。示例代码如下:
运行代码,结果如下:
从输出结果可以看出,新集合里面总共有 3 个字符串,不是 4 个字符串,这是因为集合set_a与set_b中都有字符串'c',所以它们在联合后生成新集合时会自动去掉重复的字符串'c'。
操作符“&”用于对两个集合进行交集操作,将两个集合中共有的元素提取为一个新集合。示例代码如下:
运行代码,结果如下:
从输出结果可以看出,新集合中只有一个字符串'c',这个字符串同时在集合set_a与set_b中存在。
操作符“-”用于对两个集合进行差补操作,将只属于一个集合或者只属于另一个集合的元素组成新的集合。示例代码如下:
运行代码,结果如下:
从输出结果可以看出,第一个集合里面只有一个字符串'a',这个字符串只在集合set_a中存在;第二个集合中只有一个字符串'b',这个字符串只在集合set_b中存在。
操作符“^”用于对两个集合进行对称差分操作,将只属于集合set_a与只属于集合set_b中的元素组成一个新集合。示例代码如下:
运行代码,结果如下:
从输出结果可以看出,集合中有两个字符串'a'和'b',其中字符串'a'只在集合set_a中存在,字符串'b'只在集合set_b中存在。
列表、元组、字典和集合都是相对复杂的数据类型,它们都拥有不同的特点,下面分别从可变性、唯一性和有序性这 3 个角度出发,比较列表、元组、字典和集合有什么区别,见表 5-1。
表 5-1 列表、元组、字典和集合的区别
背单词是英语学习中最基础的一环,不少学生在背诵单词的过程中会整理自己的生词本,以不断拓展自己的词汇量。本实例要求编写生词本程序,该程序需具备以下功能:
(1)查看生词本:输出生词本中全部的单词;若生词本中没有单词,则提示“生词本内容为空”。
(2)背单词:从生词列表中取出一个单词,要求用户输入相应的翻译,输入正确提示“太棒了”,输入错误提示“再想想”。若生词本中没有单词,则提示“生词本内容为空”。
(3)添加新单词:用户分别输入新单词和翻译,输入完成后展示添加的新单词和翻译,并提示用户“单词添加成功”。若生词本中已经存在新单词,则提示“此单词已存在”。
(4)删除单词:展示生词列表,用户输入单词以选择要删除的生词。若输入有误提示“删除的单词不存在”,否则删除生词后提示“删除成功”。若生词本中没有单词,则提示“生词本内容为空”。
(5)清空生词本:查询生词列表,若列表为空提示“生词本为空”,否则清空生词本中的全部单词,并输出提示信息“生词本清空成功”。
(6)退出生词本:退出生词本程序。
代码
生词本
扫描二维码,可查看参考代码。