集合 set
集合是可变容器
集合内的数据对象是唯一的(不能重复多次的)
集合是无序的存储结构,集合中的顺序没有先后关系
集合的元素必须是不可变对象、
集合是可迭代的
集合是相当于只有键没有值的字典(键则是集合的数据)
创建空的集合、
s= set()
创建非空集合
set={1,2,3} 集合中的三个整数1,2,3
集合的构造函数 set
set 创建空集合
set(iterable)用可迭代对象创建一个新的集合对象
示例:
s=set(“ABC”)
s=set(“ASFSSDFDG”) #会去掉重复的
s=({“1”:“dsf”,“2”:“ssf”})
s=set([1,2,2.13,False])
s=set((1,2,3))
s=set([1,2,[3.1,3.2],4]) 错的,嵌套的列表是可变列表
集合的运算
-------------不支持改,只能先删除,再添加
交集 并集 补集 子集 超集
& 生成两个集合的交集
s1={1,2,3}
s2={2,3,4}
s3=s1&s2
| 生成两个集合的并集
s1={1,2,3}
s2={2,3,4}
s3=s1 | s2 s3={1,2,3,4}
-生成两个集合的补集
s1={1,2,3}
s2={2,3,4}
s3=s1 - s2 生成属于s1,但不属于s2的所有元素的组合
^生成两个集合的对称补集
s1={1,2,3}
s2={2,3,4}
s3=s1^s2 s3={1,4} 等同于 (S1-S2) | (S2-S1)
< 判断一个集合是否是另一个集合的子集
,>判断一个集合是否是另一个集合的超集
s1={1,2,3}
s2={1,2}
s2<s1 True 判断子集
s1>s2 True 判断 超集
== != 判断集合相同或者不同
s1={1,2,3}
s2={2,3,1}
s1==s2 True 集合的数据没有先后顺序关系 元素个数相同 元素值相同
s1!=s2 False
in / not in 运算符
等同于字典,in 运算符 用于集合中,当某个值存在于集合中,则为真,否则为假
not in 与 in 返回值相反、
示例:
s={1,“Two”,3.14}
1 in s True
2 in s False
3.14 not in s False
4 not in s True
python3 当中 可以用于集合的函数
len(x) max(x) min(x) sum(x) any(x) all(x)
练习
经理: 曹操 刘备 周瑜
技术员 :曹操 周瑜 张飞 赵云
用集合求:
1,是经理也是技术的集合
2,是经理但不是技术员的集合
3,是技术员,但不是经理的集合
4张飞是经理吗
5,身兼两职的的集合
6,经理和技术员共有几人
思考:
集合是可变对象,有方法能添加,删除集合的数据吗
集合的方法
s=set()
S.add(e) | 在集合中添加一个新的元素e;如果元素已经存在,则不添加 |
---|---|
S.remove(e) | 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误 |
S.discard(e) | 从集合S中移除一个元素e; |
S.clear() | 清空集合内的所有元素 |
S.copy() | 将集合进行一次浅拷贝 |
S.pop() | 从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常 |
S.update(s2) | 用 S与s2得到的全集更新变量S |
S.difference(s2) | 用S - s2 运算,返回存在于在S中,但不在s2中的所有元素的集合 |
---|---|
S.difference_update(s2) | 等同于 S = S ^ s2 |
S.intersection(s2) | 等同于S & s2 |
S.intersection_update(s2) | 等同于S = S & s2 |
S.isdisjoint(s2) | 如果S与s2交集为空返回True,非空则返回False |
S.issubset(s2) | 如果S与s2交集为非空返回True,空则返回False |
S.issuperset(…) | 如果S为s2的子集返回True,否则返回False |
S.symmetric_difference(s2) | 返回对称补集,等同于 S ^ s2 |
S.symmetric_difference_update(s2) | 用S 与 s2的对称补集更新 S |
S.union(s2) | 生成 S 与 s2的全集 |
s1={1,2,3}
s2={2,3,4}
s=s1
s1|=s2 对于可变对象,不等同于s1+=s2
print(s) {1,2,3}
s1=s1|s2
print(s) {1,2,3,4}
对于不可变对象,复合赋值运算符不等同于 运算后再赋值
s1 |= s2 不等于
s1=s1 | s2
练习:
任意输入一个单词,存入集合中,当输入空字符串时结束输入
1)打印输入的单词种类数(去重)
2)每个单词都打印到终端上显示
l=<