集合 SET
集合 SET
定义:
只有键没有值的字典,保留无序的元素,没有索引。集合的元素不可变。
创建:
1.set_1 = set(seq)
2.set_2 = {}
list_1 = [1,2,3,45,4,2]
set_1 = set(list_1)
set_2 = {1,1,2,3,4,3}
print(set_1) #out:{1, 2, 3, 4, 45}
print(set_2) #out:{1, 2, 3, 4}
创建只有一个元素的集合
set_11 = set(('python',))
set_12 = {
'python'}
set_3 = set('hello')
print(set_11) #out:{'python'}
print(set_12) #out:{'python'}
print(set_3) #out:{
{'e', 'l', 'o', 'h'}
创建多个元素的集合
set_21 = set(('hello','python'))
set_22 = set(('hello','python'))
set_23 = {
'hello','python'}
print(set_21) #out:{
{'hello', 'python'}
print(set_22) #out:{
{'hello', 'python'}
print(set_23) #out:{
{'hello', 'python'}
增:
单个增加
set_a = set(('hello','python'))
set_a.add('world')
print(set_a) #out:{'hello', 'python', 'world'}
批量增加
set_u = set(('hello',))
set_p = set(('python',))
set_u.update(set_p)
print(set_u) #out:{'hello', 'python'}
set_u.update({
'world'})
print(set_u) #out:{'world', 'hello', 'python'}
set_u.update('world')
print(set_u) #{'w', 'python', 'world', 'o', 'l', 'd', 'r', 'hello'}
#
删:
remove:删除指定元素。若元素不存在则会报错。
discard:删除指定元素。若元素不存在则不会报错。
pop:随机删除元素,然而在交互模式,pop 是删除集合的第一个元素(排序后的集合的第一个元素)。
set_r = set(('hello','python','world','qsl'))
set_r.remove('hello')
print(set_r) #out:{'world', 'qsl', 'python'}
set_r.pop()
print(set_r) #out:{'qsl', 'python'}
set_r.discard('qsl')
print(set_r) #out:{'python'}
set_r.discard('hello')
print(set_r) #out:{'python'}
set_r.remove('hello') #out:KeyError: 'hello'
集合的操作:
#并集
#set_a|set_b = set_b|set_a = set_a.union(set_b) = set_b.union(set_a)
set_a = set(('hello','python'))
set_b = set(('hello','world'))
print(set_a|set_b) #out:{'world', 'hello', 'python'}
set_a.update(set_b)
print(set_a) #out:{'world', 'hello', 'python'}
print(set_a.update(set_b)) #out: None
#交集
#set_a.intersection(set_b)= set_a&set_b =set_b.intersection(set_a) = set_b&set_a
set_a = set(('hello','python'))
set_b = set(('hello','world'))
print(set_a&set_b) #out:{'hello'}
#差集:set_a中有而set_b中无
#set_a.difference(set_b) = set_a-set_b
set_a = set(('hello','python'))
set_b = set(('hello','world'))
print(set_a.difference(set_b)) #out:{'python'}
print(set_a-set_b) #out:{'python'}
#判断子集:查看set_a是否为set_b的子集
# set_a.issubset(set_b) = set_a <= set_b
set_a = set(('hello','python'))
set_b = set(('hello','world'))
print(set_a.issubset(set_b)) #out:False
print(set_a <= set_b) #out:False
内置方法
序号 | 方法 | 说明 |
1 | add() | 为集合添加元素,一次只能加一个 |
2 | update() | 给集合添加元素,一个可以加多个 |
3 | copy() | 拷贝一个集合 |
4 | clear() | 移除集合中的所有元素 |
5 | discard() | 删除集合中指定的元素,若不存在,不会报错 |
6 | remove() | 移除指定元素,若不存在,则会报错 |
7 | pop() | 随机移除元素 |
8 | union() | 返回两个集合的并集 |
9 | intersection() | 返回集合的交集 |
10 | difference() | 返回多个集合的差集 |
11 | difference_update() | 移除集合中的元素,该元素在指定的集合也存在 |
12 | intersection_update() | 删除集合中的元素,该元素在指定的集合中不存在 |
13 | issubset() | 判断指定集合是否为该方法参数集合的子集。 |
14 | isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False |
15 | issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
16 | symmetric_difference() | 返回两个集合中不重复的元素集合 |
17 | symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中 |
推导式:
和列表推导式相似,都是对一个序列进行操作。
但集合推导式的结果无序且不重复。
list_1 = [1,2,3,-1,4,-2]
set_1 = { i**2 for i in list_1 }
print(set_1) #out:{16, 1, 4, 9}
print(type(set_1)) #out:<class 'set'>
转载于//www.cnblogs.com/qianslup/p/11061679.html
还没有评论,来说两句吧...