python(集合)
集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合中只能存放不可变的类型数据
集合中没有下标索引(即无序)
集合中的元素都是唯一的,没有重复元素
集合是可变类型数据(有增删改查方法)
创建集合:
set1 = {11, 22, 33, 44,'python'}
print(set1)
set2 = set('python') #建议使用下面的写法,这种写法会输出{'t', 'y', 'n', 'h', 'p', 'o'}
print(set2)
set3 = set((1,'pa','ss'))
print(set3)

添加一个元素
set1 = {11, 22, 33, 44,'python'}
set1.add(5)
print(set1) #集合是无序的,所以输出结果也是无序的

用update()方法添加
set1 = {11, 22, 33, 44,'python'}
set1.update([1,2],'sa1',(5,6)) #不能是整数,填整数int会报错;可以是列表,元组,字典,字符串等
print(set1)

可以用update()方法合并集合
set1 = {11, 22, 33, 44,'python'}
set2 = {65,23}
set1.update(set2)
print(set1)

移除元素
set1 = {11, 22, 33, 44,'python'}
set1.remove(11) #删除指定元素,如果元素不存在会报错
print(set1)
set1.discard(22) #删除指定元素,元素不存在不会报错
print(set1)
set1.discard(342342)
x = set1.pop() #随机删除一个元素
print(x)

set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除
集合计算
a = {11, 22, 33, 44,'python'}
b = {'a','c',11}
print(len(a)) #集合a的元素数量
print(a-b) #存在集合a中但不在集合b中的元素
print(a|b) #并集,集合a,b中的所有元素(去重)
print(a&b) #交集,集合a,b中都有的元素
print(a^b) #不同时包含在a,b集合的元素

清空集合
a = {11, 22, 33, 44,'python'}
a.clear()
print(a)

判断元素是否在集合中
a = {11, 22, 33, 44,'python'}
print(11 in a)
print('ss' in a)

集合内置方法
| 方法 | 描述 |
|---|---|
| add() | 为集合添加元素 |
| clear() | 移除集合中的所有元素 |
| copy() | 拷贝一个集合 |
| difference() | 返回多个集合的差集 |
| difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
| discard() | 删除集合中指定的元素 |
| intersection() | 返回集合的交集 |
| intersection_update() | 返回集合的交集。 |
| isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
| issubset() | 判断指定集合是否为该方法参数集合的子集。 |
| issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
| pop() | 随机移除元素 |
| remove() | 移除指定元素 |
| symmetric_difference() | 返回两个集合中不重复的元素集合。 |
| symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
| union() | 返回两个集合的并集 |
| update() | 给集合添加元素 |
补充
s.update( "字符串" ) 与 s.update( {"字符串"} ) 含义不同:
s.update( {"字符串"} ) 将字符串添加到集合中,有重复的会忽略
s.update( "字符串" ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略
a = {11, 22, 33, 44,'python'}
a.update('for')
print(a)
a.update({'for'})
print(a)


浙公网安备 33010602011771号