Set类型
# Set 类型
1.Python 的set类型是集合内元素值唯一、元素值不可变的无序集。
set类型并不要求其集合内各个元素都是相同类型。
唯一:
set类型的集合内元素的值唯一。- 如果有两个变量指向同一个对象,则在
set集合内只会出现一次 - 如果有两个对象值相等,则在
set集合内也只会出现一次
- 如果有两个变量指向同一个对象,则在
不可变:一旦创建完毕,则
set集合内的各个元素值不能修改。 > 本质上set通过元素值的哈希值来判断唯一性
2.
set本身的性质有:set对象是可迭代对象set对象可以增长或缩短set对象可能包含各种类型的对象作为元素创建
set对象的方法为调用x=set(iter),其中iter为任何序列或可迭代对象3.
set对象有以下操作:成员关系:
e in x(返回bool值)差集:
x-y(返回新的set对象)并集:
x|y(返回新的set对象)交集:
x&y(返回新的set对象)对称差集:
x^y(返回新的set对象)对称差集:并集中去掉交集的那部分
判定 x 是否是 y 的超集:
x>y(返回bool值)判定 x 是否是 y 的子集:
x<y(返回bool值)
3.
set的方法有:.add(item):向set中插入一项,原地修改(返回None)。其中item为待插入项.update(iter):求并集,原地修改(返回None)。其中iter为任何可迭代对象.remove(item):向set中删除一项,原地修改(返回None)。其中item为待删除项.intersection(iter):求交集,返回新的set对象。其中iter为任何可迭代对象注意这里与表达式中的
set交集、并集操作的区别: 表达式中的set交集、并集操作要求两个对象均为集合4.
set对象是可迭代的,因此可用于len()函数,for循环,以及列表解析中,但是因为是无序的所以不支持索引和分片操作。
5.Python3 中,
set常量可以用大括号创建:{1,2,3,4}等价于set([1,2,3,4])。空
set必须由set([])创建,{}为空字典而不是空setPython3 中,
set的字符串表示为{...}形式,而不是set([...])形式6.
set只能包含不可变的对象,因此列表对象、字典对象、set对象均不能作为set的元素。元组和字符串可作为
set的元素7.
frozenset是set的子类型,它与set的唯一区别是:frozenset对象可以作为set的元素。
8.
set的解析构造(在 Python3 之后):{x**2 for x in iter},其中iter为任何可迭代对象。