python基础 7 集合

97 阅读2分钟

set:集合 {}:可以应用于集合 {1,2,3} --- 集合

一 集合的特点

1. 集合是无序的 顺序是由哈希值决定 
2. 集合是可迭代对象 
3. 不支持索引操作和切片操作 不是一个序列 
4. 集合的元素不重复 
5. 集合的元素必须是可哈希值 不可变类型 字典的键就是由集合实现 
6. 集合是可变类型 

二 集合的创建

1. 手工创建: 变量名={元素1,元素2...} 
2. set(): 创建空集合对象 {}:表示空字典 set():表示空集合---集合对象 
3. set(可迭代对象): 
将可迭代对象的每个元素,作为集合的元素 

三 集合的访问

1. 遍历---访问所有元素 集合中的所有的元素被访问一遍,不重复,不遗漏 

四 集合的修改

1. 存储的一定是不可变类型的元素,不涉及修改问题 

五 集合的删除

1. clear(): 清空集合 
2. pop(): 删除并返回一个元素,如果集合为空则报错 
3. remove(value) 
    从集合中删除value元素,如果value不存在则报错 
4. discard(value) 
    从集合中删除value元素,如果value不存在什么都不做 

六 集合的添加元素

1. add(元素) 
    向集合中添加一个元素 
    只能添加可哈希值(不可变类型) 
    如果用元组作为元素,注意:元组中不能有可变类型 

七 集合相关的操作符

1. 支持成员关系操作符 in not in 
2. 支持增强赋值 
    数学相关方法 
    -= 
    - 
3. 支持比较运算符 
    < > <= >= != == 
    数学相关比较 

八 集合其他的方法

1. copy(): 浅拷贝 

九 交集,并集,差集

1. 交集: & intersection() insersection_update() 两集合相交并修改调用者 
2. 差集/补集 - difference() difference_update() 两集合做差并修改调用者 
3. 并集: | union() update() 两集合求并集,并修改调用者 
4. 对称差集: symmetric_difference() symmetric_difference_update() 求两个集合的对称差集,并修改调用者 
5. 判断是否相交: isdisjoint() 
6. issubset(): 判断是否是子集 不可变集合 
7. issuperset(): 判断是否是父集 

s1={1,2,3} 
s2={3,4,5} 
s3={7,8,9} 
s4={1} 
print(s1 & s2) 
print(s1.intersection(s2)) 
print(s1,s2) 
s2.intersection_update(s1) 
print(s1,s2) 
print(s1-s4) 
print(s1,s4) 
s1.difference_update(s4) 
print(s1,s4) 
print(s1 | s2) 
print(s1.union(s2)) 
print(s1-s2) 
print(s2-s1) 
print(s1.symmetric_difference(s2)) 
print(s2.symmetric_difference(s1)) 
print(s1.isdisjoint(s3)) 
print(s4.issubset(s1)) 
print(s1.issuperset(s4)) 
# print(s1.issubset(s2)) 

十 不可变集合

frozenset:不可变集合 
    l=[1,2,3,4] 
    f=frozenset(l) 
    print(f) 
1. frozenset(): 返回一个空不可变集合对象 
2. frozenset(): 返回一个新的frozenset对象 
特点: 
    1. 是一个可迭代对象 可以遍历 
    2. 元素是无序的 
    3. 是一个不可变类型