python:集合(set)的定义和常用操作
什么是集合
集合(set)是一个无序的、元素不允许重复的数据容器,与列表或元组不同,集合不允许重复值,也就是说集合中的每个元素都必须是唯一的。集合是可变的,这意味着在创建集合后你可以添加或移除元素。
集合的特点:
集合的定义
语法
# 定义集合字面量
{元素, 元素, ..., 元素}
# 定义集合变量
变量名称 = {元素, 元素, ..., 元素}
# 定义空集合
变量名称 = set()
示例
示例1:定义空集合
a = set()
print(a)
print(type(a))
运行结果:
示例2:定义集合字面量
{'hello', 'world', 1, 2}
示例3:定义集合变量
a = {'hello', 'world', 1, 2}
print(a)
print(type(a))
运行结果:
示例4:集合中的元素不重复
a = {'hello', 'world', 1, 2, 1}
print(f'集合a的内容是:{a}')
print(f'集合a的元素个数是:{len(a)}')
print(type(a))
运行结果:
集合的常用操作
因为集合是无序的,所以集合不支持通过下标索引访问。
集合允许修改。
添加新元素
语法
集合.add(元素)
将指定元素添加到集合内。如果该元素已经存在于集合中,则集合保持不变。
示例1:添加的元素不重复
my_set = {'hello', 'world'}
my_set.add('python')
my_set.add('java')
print(f'添加新元素后,集合的内容是:{my_set}')
运行结果:
示例2:添加重复的元素:原集合不会改变
my_set = {'hello', 'world', 'python'}
print(f'添加新元素前,集合的内容是:{my_set}')
my_set.add('python')
print(f'添加新元素后,集合的内容是:{my_set}')
运行结果:
移除元素
语法
集合.remove(元素)
将指定元素从集合中移除。如果元素不存在,将抛出KeyError。
示例1:正常移除元素
my_set = {'hello', 'world', 'python'}
print(f'移除元素前,集合的内容是:{my_set}')
my_set.remove('python')
print(f'移除元素后,集合的内容是:{my_set}')
运行结果:
示例2:移除元素,但元素在集合中不存在,抛出KeyError
my_set = {'hello', 'world', 'python'}
print(f'移除元素前,集合的内容是:{my_set}')
my_set.remove('java')
print(f'移除元素后,集合的内容是:{my_set}')
运行结果:
从集合中随机移除元素
语法
集合.pop()
从集合中随机移除并返回这个元素。如果集合为空,抛出KeyError。
示例1:正常随机移除一个元素
my_set = {'hello', 'world', 'python'}
print(f'移除元素前,集合的内容是:{my_set}')
element = my_set.pop()
print(f'移除的元素是:{element},随机移除元素后,集合的内容是:{my_set}')
一次运行的结果:
示例2:集合为空,随机移除一个元素,抛出KeyError
my_set = set()
print(f'移除元素前,集合的内容是:{my_set}')
my_set.pop()
print(f'随机移除元素后,集合的内容是:{my_set}')
运行结果:
清空集合
语法
集合.clear()
从集合中移除所有元素。
示例
my_set = {'hello', 'world', 'python'}
print(f'清空集合前,集合的内容是:{my_set}')
element = my_set.clear()
print(f'清空集合后,集合的内容是:{my_set}')
运行结果:
取两个集合的差集
语法
集合1.difference(集合2)
取出集合1 和 集合2 的差集(集合1中有而集合2中没有的)。
返回:一个新的集合,集合1 和 集合2 不变。
示例
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
set3 = set1.difference(set2)
set4 = set2.difference(set1)
print(f'取差集后,原有set1的内容是:{set1}')
print(f'取差集后,原有set2的内容是:{set2}')
print(f'set1和set2的差集是:{set3}')
print(f'set2和set1的差集是:{set4}')
运行结果:
消除两个集合的差集
语法
集合1.difference_update(集合2)
功能:对比集合1 和 集合2,在集合1内,删除和集合2相同的元素。
结果:集合1被修改,而集合2不变。
示例
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
set1.difference_update(set2)
print(f'消除差集后,set1的内容是:{set1}')
print(f'除差集后,set2的内容是:{set2}')
运行结果:
两个集合合并
语法
集合1.union(集合2)
功能:将集合1 和 集合2组成新集合。
结果:得到新集合,集合1 和 集合2不变。
示例
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
set3 = set1.union(set2)
print(f'set1 和 set2 合并后的集合为:{set3}')
print(f'合并后,原有集合set1为:{set1}')
print(f'合并后,原有集合set2为:{set2}')
运行输出:
统计集合的元素数量
语法
len(集合)
示例:赋值时没有重复元素
set1 = {1, 2, 3, 4, 5}
num = len(set1)
print(f'集合set1的元素数量是:{num}')
运行结果:
示例:赋值时有重复元素
set1 = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
num = len(set1)
print(f'集合set1的元素数量是:{num}')
运行结果:
集合的遍历
集合没有索引下标,所以不支持while循环遍历,但可以用for循环遍历。
set1 = {1, 2, 3, 4, 5}
for element in set1:
print(element)
运行结果:
作者:听海边涛声