1. 定义
集合是一个无序且不重复的元素集合,一种类似列表和字典的数据结构。集合的表示方法是花括号,这与字典是一样的,可以通过花括号或构造函数set()来初始化一个集合。需要注意的是,要创建一个空集合,必须使用set(),如果使用{}将得到的是一个空字典。
2. 基本属性
2.1 关系测试
集合可以用in和not in检查一个对象是否属于集合。
输入:
num_set = {1, 2, 3, 4, 5}
word_set = set(["one", "two", "three"])
print(3 in num_set)
print("two" not in word_set)
输出:
True
False
2.2 消除重复元素
因为集合元素具有不重复的特点,所以如果传入的参数有重复,会自动忽略。所以它非常适合用来消除重复元素。
nums = {1, 2, 1, 3, 1, 4, 5, 6}
print(nums)
输出:
{1, 2, 3, 4, 5, 6}
2.3 访问集合
因为集合是无序的,所以不可以用索引访问集合元素,也不能做切片(slice)操作,更没有键(keys)可用来获取集合中元素的值。
但是可以由len()函数获得集合的大小, 用 for 循环迭代集合的成员(for x in set)。
2.4 修改集合
2.4.1 增加元素
2.4.1.1 add
增加单个元素,add的作用类似列表中的append.
2.4.1.2 update
增加序列,类似列表中的extend。update方法可以支持同时传入多个参数.增加已有的元素不会对集合产生影响,也不会抛出异常.
2.4.2 删除元素
2.4.2.1 discard
删除单个元素,如果指定元素不在集合中也不会抛出异常。
2.4.2.2 remove
删除单个元素,如果指定元素不在集合中会抛出KeyError错误.
2.4.2.3 clear
清空集合.
2.4.3 抛出元素
集合支持pop()方法,但是由于集合是无序的,pop返回的结果不能确定。且当集合为空时调用pop会抛出KeyError错误。
2.5 数学运算
2.5.1 union
操作符为“|”,取并集。
2.5.2 intersection
操作符为“&”,取交集。
2.5.3 difference
操作符为“-”,取第一个集合中包含,但是第二个集合中没有的元素组成集合。
2.5.4 sysmmetric difference
操作符为“^”,取并集减去交集。
输入:
first = {1, 2, 3, 4, 5, 6}
second = {4, 5, 6, 7, 8, 9}
print(first | second)
print(first & second)
print(first - second)
print(second - first)
print(first ^ second)
输出:
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{4, 5, 6}
{1, 2, 3}
{8, 9, 7}
{1, 2, 3, 7, 8, 9}