集合 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'>
原文地址:https://www.cnblogs.com/qianslup/p/11061679.html