集合
集合是无序的,不重复的且不可以更改的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
- 去重,把一个列表变成集合,就自动去重了。
- 关系测试,测试两组数据之前的交集、差集、并集等关系。
集合的创建
创建一个空的集合
这里需要注意,我们不可以直接用花括号"{}"
>>> st = set()
>>> st
set()
>>> st1 = {}
>>> type(st),type(st1)
(<class 'set'>, <class 'dict'>)
多元素的集合创建
>>> st = {"a","b","c","d","e"}
>>> st,type(st)
({'c', 'a', 'b', 'e', 'd'}, <class 'set'>)
>>>
集合的强转
>>> li = [1,"a","n","University"]
>>> st_li = set(li)
>>> st_li,type(st_li)
({1, 'a', 'n', 'University'}, <class 'set'>)
集合的基本操作
查
- 无序,不可以查找
增
-
set.add(x)
将元素x添加到集合s中,如果元素已存在,则不进行任何操作。
-
set.updat
x 可以有多个,用逗号分开(随机位置添加)。
>>> st = {1,2,"Hunan","Yingxiao","College"}
>>> st.add("Comput Science")
>>> st
{1, 2, 'College', 'Yingxiao', 'Hunan', 'Comput Science'}
>>> st.update("湖南","长沙")
>>> st
{1, 2, '南', '沙', '湖', 'College', 'Yingxiao', 'Hunan', '长', 'Comput Science'}
删
-
set.remove(x)
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
-
set.discard(x)
将元素 x 从集合 s 中移除,如果元素不存在,不会发生错误。
-
set.pop()
随机删除,排序最小的一个元素
>>> st = {1,2,"Hunan","Yingxiao","College"}
>>> st.remove(2)
>>> st
{1, 'College', 'Yingxiao', 'Hunan'}
>>> st.discard("AAA")
>>> st
{1, 'College', 'Yingxiao', 'Hunan'}
>>> st.pop()
1
>>> st
{'College', 'Yingxiao', 'Hunan'}
-
set.clear()
清空所有内容
-
del set名
删除变量
>>> st = {1,2,3}
>>> st.clear()
>>> st
set()
>>> st = {1,2,3}
>>> del st
>>> st
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'st' is not defined
>>>
改
- 不可能更改
遍历
>>> st = {1,2,"Hunan","Yingxiao","College"}
>>> for i in st:
... print(i,end = " ")
...
1 2 Yingxiao Hunan College >>>
>>> st = {1,2,"Hunan","Yingxiao","College"}
>>> for index,value in enumerate(st):
... print(index,value)
...
0 1
1 2
2 Yingxiao
3 Hunan
4 College
>>>
子集
-
issubest()
判断指定集合是否为该方法参数集合的子集。
>>> a = set("abcd")
>>> b = set("cdef")
>>> c = set("ab")
>>> a,b,c
({'c', 'd', 'a', 'b'}, {'c', 'e', 'f', 'd'}, {'a', 'b'})
>>> c.issubset(a)
True
>>> c<a
True
>>> c<b
False
>>>
交集
-
intersection()
返回集合的交集
>>> a = set("abcd")
>>> b = set("cdef")
>>> a.intersection(b)
{'c', 'd'}
>>> a & b
{'c', 'd'}
>>>
并集
-
union()
返回两个集合的并集
>>> a = set("abcd")
>>> b = set("cdef")
>>> a.union(b)
{'f', 'd', 'c', 'a', 'e', 'b'}
>>> a|b
{'f', 'd', 'c', 'a', 'e', 'b'}
>>>
-
difference()
返回集合的差集
>>> a = set("abcd")
>>> b = set("cdef")
>>> a.difference(b)
{'a', 'b'}
>>> a-b
{'a', 'b'}
>>>