集合
1.无序
2.是可迭代对象
3.不是序列
4.是可变类型
补充:
字典的键由集合实现,字典的键的特性就是集合的特性
集合的底层实现:hash函数
1.手工
s = {1, 2, 3}
不能创建空集合
2.构造方法
set():创建空集合:set()
注意:空集合的形式:set()
set(iterable):通过可迭代对象创建集合
1.add(value):
向集合中增加一个元素
代码:
s = {1, 2}
s.add(3)
print(s)
效果:
{1,2,3}
1.clear():
清空集合
2.pop():
随机删除一个元素
3.remove(value):
删除指定元素
只能删除某个值,添加新的值--伪修改
只能通过遍历的形式访问全部
1.交集& intersection(..):
2.差集- difference(...):
3.并集| union(...):
4.分离集 isdisjoint(b)
5.对称差集 symmetric_difference(...):
补充:
a.方法()不会修改原数据
set1.方法名_update(set2) 加上update会修改原数据
a.update(b) 会修改调用者
a.issubset(d) 是否是子集
a.issupperset(d) 是否是父集
代码:
a={1,2,3}
b={3,4,5}
c={7,8,9}
d={3}
print(a&b, a.intersection(b))
print(a-b, a.difference(b))
print(a|b, a.union(b))
print(a.isdisjoint(b))
print(a.symmetric_difference(b))
a.update(b)
print(a, b)
a.intersection_update(b)
print(a, b)
print(a.issubset(d))
print(a.issuperset(d))
效果:
{3} {3}
{1, 2} {1, 2}
{1, 2, 3, 4, 5} {1, 2, 3, 4, 5}
False
{1, 2, 4, 5}
{1, 2, 3, 4, 5} {3, 4, 5}
{3, 4, 5} {3, 4, 5}
False
True
in / not in
1.frozenset():
创建不可变空集合(一旦创建不可修改)
2.frozenset(iterable)
利用可迭代对象创建不可变集合
集合中的数据:必须是可哈希的数据(不可变类型数据)
s={1,2,[1,2,3]} s={{1,2,3},{4,5,6}}
错的,列表和集合和字典都是可变的,frozenset不可变可以
注意:每一个元素都得是不可变类型(包括元素中的元素)
集合可以存放多个数据,多种数据,存放不可变类型数据,必须保证,每一元素都是不可变类型