1.集合的创建和删除
2.集合的操作符
3.集合的操作方法和遍历
4.列表、元组、字典、集合的区别
一、集合的创建和删除
集合(set)是一种内置的数据结构,用于存储唯一且无序的元素。集合是一个可变的数据类型,这意味着你可以添加、删除或修改集合中的元素。集合主要用于数学中的集合操作,如并集、交集、差集等。
python
# 直接{}创建集合
s = {10, 21, 36, 19}
print(s)
# 集合存储不可变量数据类型
# s1 = {[10,20,3], [5,6,9,8,5],[4,5,8,6,6]}
# print(s1)# 报错TypeError: unhashable type: 'list'
# 使用set()创建一个空集合
s2 = set()
print(s2,type(s2))# set() <class 'set'>
s3 = {}# 创建的是字典
print(s2,type(s3))# set() <class 'dict'>
s4 = set('dhjiweojasaa')
print(s4)
s5 = set([2,5,6,8,77,6,3,41,'edwee'])
print(s5)
s6 = set(range(1,20))
print(s6)
# 集合属于序列的一种
print('max:',max(s4))
print('min:',min(s4))
print('len:',len(s5))
print('yuwen在s4集合串中存在吗?:',(10 in s4))
print('d在s4集合中存在吗?:',(15 in s4))
print('o在s4集合中不存在吗?:',(12 not in s4))
# 集合的删除
del s5
# print(s5)# NameError: name 's5' is not defined. Did you mean: 's'?
二、集合的操作符
集合支持多种数学集合操作:
并集:使用 | 或 union() 方法。
交集:使用 & 或 intersection() 方法。
差集:使用 - 或 difference() 方法。
对称差集:使用 ^ 或 symmetric_difference() 方法。
python
set1 = {1, 2, 3, 4, 8, 5, 9}
set2 = {3, 4, 5, 6, 7, 10, 20}
# 并集
union_set = set1 | set2
print(union_set)
# 交集
intersection_set = set1 & set2
print(intersection_set)
# 差集
difference_set = set1 - set2
print(difference_set) # 输出set1里 除了set2交集部分
# 对称差集
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set) # 输出set1、set2并集除去交集部分
三、集合的操作方法和遍历
clear():清空集合中的所有元素。
copy():返回集合的一个副本。
isdisjoint():判断两个集合是否没有交集。
issubset():判断一个集合是否是另一个集合的子集。
issuperset():判断一个集合是否是另一个集合的超集。
add() 方法向集合中添加元素
remove() 方法删除集合中的元素。如果元素不存在,会引发 KeyError 异常
discard() 方法,它会在元素不存在时不做任何操作
pop() 方法来随机删除并返回集合中的一个元素
python
s = {10, 21, 36, 19}
# 向集合添加元素
s.add(29)
print(s)
# 删除元素
s.remove(21)
print(s)
# 清空所有元素
s.clear()
print(s)
# 集合遍历操作
s1 = {4,9,8,5,66,32,47,89}
for i in s1:
print(i)
# 使用enumerate
for i,j in enumerate(s1):
print(i,'--->',j)
# 生成式
s2 = {i for i in range(1,20) }
print(s2)
s3 = {i for i in range(1,20) if i%2==0}
print(s3)
四、列表、元组、字典、集合的区别
与列表(list)、元组(tuple)和字典(dictionary)相比,集合具有以下特点和作用:
1.唯一性:集合中的元素是唯一的,即不允许有重复的元素。这有助于确保数据的唯一性和去重操作。
2.无序性:集合中的元素是无序的,这意味着你不能通过索引来访问集合中的元素。不过,这并不影响集合的性能,因为集合的内部实现通常基于哈希表,这使得查找、添加和删除操作都非常高效。
3.数学运算:集合支持多种数学运算,如并集(union)、交集(intersection)、差集(difference)和对称差集(symmetric difference)。这些操作对于处理集合数据非常有用,可以方便地进行数据的合并、筛选和比较。
4.可变性:Python中的集合是可变的,这意味着你可以在运行时添加、删除或修改集合中的元素。这与元组不同,元组是不可变的。
5.快速查找:由于集合内部通常使用哈希表来存储元素,因此查找操作的平均时间复杂度为O(1),这使得集合在处理大数据集时非常高效。
6.去除重复元素:集合常用于去除列表或其他数据结构中的重复元素。你可以通过将列表转换为集合来快速实现这一点,然后再将集合转换回列表(如果需要保持有序性)。
7.作为字典的键:集合是不可哈希的(因为它是可变的),因此不能作为字典的键。但是,集合中的元素(如果是不可变的,如整数、浮点数、字符串或元组)可以作为字典的键。
8.集合推导式:Python支持集合推导式(set comprehensions),这使得你可以使用类似于列表推导式的语法来创建集合。这有助于简化代码并提高可读性。