集合
集合是一个无序的不重复元素序列
用大括号 {}
或者 set()
函数创建集合
注意:创建一个空集合必须是 set()
而不是通过 {}
因为这个是创建字典的。
集合不能通过索引来查找,只能判断是否存在此集合中 is,set存储的元素必须是不可变对象,任何可变对象都不能放入set中的。
定义:
① s = set()
定义一个空集合
② s = {value1, value2, valueN,...}
创建有值的集合
③ s = set([列表,元组,字典])
强转为集合类型,字典转后只留”键“
# 创建空集合方式一
>>> set = set()
>>> type(set)
<class 'set'>
>>> set.add("1")
>>> print(set)
{'1'}
----------------------------
# 创建集合方式二,大括号内必须有值,不然为字典类型
>>> set = {1,2,3,4,5}
>>> type(set)
<class 'set'>
----------------------------
# 创建集合方式三,用set()把元组、列表强转为集合
>>> s = set((1,2))
>>> s
{1,2}
增
set.add(value)
用于添加元素至集合中,由于是无序的,所以插入的位置可能会发生变化set.update([list, tuple, dict])
添加元素,参数可以是列表和元祖、字典
set = {1, 2, 3, 4, 5}
set.add("林青霞")
>>> print(set)
>>> {1, 2, 3, 4, 5, "林青霞"}
set.add("6")
>>> print(set)
>>> {1, 2, 3, 4, 5, "6" , "林青霞"}
-----------------------
set.update(('a','b'))
>>> print(set)
>>> {1, 2, 3, 4, 5, "6", 'a' , "林青霞", 'b'}
删
set.remove( x )
:将内容为x的元素从集合中删除,如果元素不存在报错set.discard( x )
:若集合中存在x则删除x,不存在不做操作,都会返回Noneset.pop()
:随机删除集合中的元素set.clear()
:清空集合
>>> set = {1,2,3,4,5,6}
>>> print(set)
{1, 2, 3, 4, 5, 6}
>>> set.remove(3) # 删除内容是3的元素
>>> print(set)
{1, 2, 4, 5, 6}
>>> set.remove('a') # 若元素不存在时
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
--------------------------
>>> set.discard('a') # 不存在,但不会报错
>>> print(set)
{1, 2, 4, 5, 6}
>>> set.discard(4)
>>> print(set)
{1, 2, 5, 6}
--------------------- # pop随机删除
>>> set = {1,23,4,32,46,43,634,6,}
>>> type(set)
<class 'set'>
>>> set.pop()
32
>>> set.pop()
1
>>> set.pop()
4
>>> set.clear() # 清空集合
>>> print(set)
set()
集合内置函数
len()
:计算集合的长度set.intersection(set)
:返回两个集合的交集s1.issubset(s2)
:s1是否为s2的子集union()
:返回两个集合的并集
>>> set = {1,2,3,4}
>>> len(set)
4
-----------
>>> s1 = set([1,2,3])
>>> s2 = set([3,4,5])
>>> s1.intersection(s2)#交集
{3}
>>> s1.issubset(s2)#子集
False
>>> {3,4}.issubset(s2)
True
>>>
遍历集合
>>> set = {1,2,3,4}
>>> len(set)
4
>>> for i in set:
... print(i)
...
1
2
3
4
交集和并集
>>> s = set("abc")
>>> s2 = set("cdf")
>>> s - s2 # 集合1中有,而集合2没有
{'a', 'b'}
-------------------
>>> s & s2 # 交集,集合1和集合2相同的
{'c'}
-----------------
>>> s | s2 # 并集,集合1和集合2所有的
{'c', 'b', 'a', 'f', 'd'}
------------------
>>> s ^ s2 #集合1独有,集合2独有的
{'d', 'f', 'a', 'b'}
集合转换
- 字典转换为集合
>>> s = set()
>>> type(s)
<class 'set'>
>>> dict = {"a":'1'}
>>> s = set(dict) # 字典转换为集合
>>> print(s)
{'1','a'}
- 列表转化为集合
>>> s = set()
>>> type(s)
<class 'set'>
>>> list = [1,2,3] # 创建列表
>>> s = set(list) # 列表转换为集合
>>> print(s)
{1, 2, 3}
- 元祖转换为集合
>>> s = set()
>>> type(s)
<class 'set'>
>>> tup = (a,b,c)
>>> s = set(tup)
>>> print(s)
{'c', 'a', 'b'}