Python基础-6.集合

TOC

一、集合基本使用

集合(set)是一个无序的不重复元素序列,关键在于 “无序” 和 “不重复”。

总结:集合的很多操作比如求集合长度使用len()方法、判断元素是否存在、遍历集合元素等都和列表以及字典相同。

集合的赋值

可以使用大括号{}或者set()函数创建集合。

# 创建一个空集合
set1 = set()
# 创建集合初始化元素
set2 = {'red', 'blue', 'green', 'yellow', 'black'}
# 从字符串创建集合
set3 = set('abcde')  # 创建结果 {'a', 'b', 'c', 'd'}
# 从列表创建集合
set4 = set([1, 2, 3])

注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典。

集合的运算

【示例】代码如下:

a = set('abcdefghijk')
b = set('aceghilo')
print('a集合中b没有的元素:', a - b)
print('集合a和集合b中所有的元素:', a | b)
print('集合a和b中都存在的元素:', a & b)
print('集合a和集合b中互不包含的元素:', a ^ b)
''' 运行结果如下
a集合中b没有的元素: {'f', 'b', 'k', 'j', 'd'}
集合a和集合b中所有的元素: {'g', 'b', 'e', 'l', 'k', 'd', 'c', 'i', 'f', 'j', 'h', 'a', 'o'}
集合a和b中都存在的元素: {'i', 'g', 'e', 'h', 'a', 'c'}
集合a和集合b中互不包含的元素: {'f', 'b', 'd', 'l', 'k', 'j', 'o'}
'''

二、集合操作

集合方法

  • add():为集合添加元素
  • clear():移除集合中的所有元素
  • copy():拷贝一个集合
  • difference():返回多个集合的差集
  • difference_update():移除集合中的元素,该元素在指定的集合也存在。
  • discard():删除集合中指定的元素
  • intersection():返回集合的交集
  • intersection_update():返回集合的交集。
  • isdisjoint():判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
  • issubset():判断指定集合是否为该方法参数集合的子集。
  • issuperset():判断该方法的参数集合是否为指定集合的子集
  • pop():随机移除元素
  • remove():移除指定元素
  • symmetric_difference():返回两个集合中不重复的元素集合。
  • symmetric_difference_update():移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
  • union():返回两个集合的并集
  • update():给集合添加元素

添加元素

定义一个集合供下面示例使用:

data = {'red', 'green', 'black'}

1.add()方法

通过add()方法来添加元素。
【示例】代码如下:

data.add('yellow')
print(data)
''' 运行结果如下
{'black', 'yellow', 'green', 'red'}
'''

2.update()方法

通过update()方法来添加元素,可以添加单个或者多个元素。
【示例】代码如下:

# 添加单个元素
data.update({'yellow'})
print(data)
# 添加多个元素,使用逗号","来隔开
data.update({'white', 'blue'})
print(data)
# 还可以使用列表来添加,多个列表也使用逗号","来隔开
data.update(['a', 'b'])
data.update(['c', 'd'], ['e', 'f'])
print(data)
''' 运行结果如下
{'black', 'yellow', 'green', 'red'}
{'red', 'white', 'yellow', 'black', 'blue', 'green'}
{'red', 'black', 'e', 'b', 'green', 'a', 'c', 'd', 'f'}
'''

温馨提示:update()函数中的参数是字符串的时候会将字符串拆开成一个个字符添加到集合中,比如:data.update('blue')会被拆分成{'b', 'l', 'u', 'e'}

删除元素

在集合中删除元素,如果元素不存在则会报错。

1.remove()方法

使用remove()方法将集合中的指定元素从集合中移除,元素不存在则报错。
【示例】代码如下:

data.remove('red')
print(data)
''' 运行结果如下
{'black', 'green'}
'''

discard()方法

使用discard()方法将集合中的指定元素从集合中移除,元素不存在也不会报错。
【示例】代码如下:

data.discard('red')
print(data)
''' 运行结果如下
{'black', 'green'}
'''

3.pop()方法

使用pop()方法将集合中的随机元素从集合中移除。
【示例】代码如下:

data.pop()
print(data)
''' 运行结果如下
{'green', 'red'}
'''

4.clear()方法

使用clear()方法会清空集合。
【示例】代码如下:

data.clear()

集合的复制

集合的复制和列表以及字典性质都是一样的分为浅拷贝深拷贝
浅拷贝
直接使用内置的copy()方法即可,如下所示:

cp_data = data.copy()

深拷贝
使用copy.deepcopy()进行深拷贝

import copy
cp_data = copy.deepcopy(data)