Python的集合是一种无序、可变的数据结构,它是另一种变量类型。集合用于存储唯一的元素。集合中的每个元素都是唯一的,并且没有固定的顺序。
需要注意的是,集合是无序的,没有固定的顺序。因此,集合元素的顺序可能与你创建或添加的顺序不同。
集合具有以下特点:
- 集合使用大括号 {} 来表示,是内置的 set 类型。
- 集合中的元素是唯一的,不重复。如果有重复相同的元素,集合将自动去重。
ss1 = {"a","a","b"} # 元素重复的,
print(ss1) 输出:{"a","b"}
- 集合是无序的,没有固定的顺序,集合元素的顺序可能与你创建或添加的顺序不同。因此,你无法像列表或元组那样索引来访问集合中的元素。
- 集合是可迭代的,你可以使用 for 循环遍历集合中的元素。
- 集合是可变的,你可以添加、删除和修改集合中的元素
1、 集合的创建
直接使用{}创建:在Python中创建set集合也可以像列表、元组和字典一样,直接将集合赋值给变量。
例如:
mset = {1, 2, 3,3,5,5,6,7} # 使用大括号创建集合
print(mset) # 输出: {1, 2, 3,5,6,7}
通过set()函数将列表、元组等可迭代对象转换为集合:可以使用set()函数将列表、元组等其它可迭代对象转换为集合。
例如:
mset = set([1, 2, 3,4,5]) # 使用 set() 函数创建集合
print(mset) # 输出: {1,2, 3,4,5}
2、集合的操作符号:
python符号 | 说明 |
| | 并集 |
- | 差集 |
^ | 对称差集 |
== | 等于 |
!= | 不等于 |
in | 是成员 |
not in | 不是成员 |
& | 交集 |
& 交集:& 操作符用于获取两个集合的交集,即包含两个集合共有元素的新集合。
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
Inset1 = A & B
print(Inset1) # 输出: {3, 4}
| 并集:| 操作符用于获取两个集合的并集,即包含两个集合所有元素的新集合,并去掉重复值。
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
Unn1 = A | B
print(Unn1)
输出:{1,2,3,4,5,6}
- 差集:- 操作符用于获取第一个集合相对于第二个集合的差集,即只在第一个集合中但不在第二个集合中元素的新集合。
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
diff = A – B
print(diff)
# 输出: {1, 2}
^ 对称差集:^ 操作符用于获取两个集合的对称差集,即只存在A中的元素或者只在B中的元素的和且此和集不能同时在A和B中的元素组成新的集合
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
sydiff = A ^ B
print(sydiff)
# 输出: {1, 2, 5, 6}
== 等于:== 操作符用于检查两个集合是否相等,结果是bool变量,如果两个集合具有相同的元素,则 True;否则 False。
A = {1, 2, 3,4}
B = {3, 2, 1,4}
res = A == B
print(res)
# 输出: True
!= 不等于:!= 操作符用于检查两个集合是否不相等,结果是bool变量,如果两个集合具有不同的元素,则 True;否则 False。
A = {1, 2, 3}
B = {3, 4, 5}
result = A != B
print(result)
# 输出: True
in 是成员:in 关键词用于检查一个元素是否属于集合。如果元素在集合中,则 True;否则 False。
A = {1, 2, 3, 4}
result = 3 in A
print(result)
# 输出: True
not in 不是成员:not in 关键词用于检查一个元素是否不属于集合。如果元素不在集合中,则 True;否则 False。
A = { 2, 3, 4}
result = 6 not in A
print(result)
# 输出: True
3、集合的操作方法:
add() 添加元素:向集合添加一个元素
myset = {1, 2, 3}
myset.add(4)
print(myset)
输出:{1,2,3,4}
remove():从集合中移除指定元素,如果元素不存在,会引发 KeyError。
myset = {1, 2, 3,4}
myset.remove(2)
print(myset)
输出:{1,3,4}
discard():从集合中移除指定元素,如果元素不存在,不会引发错误。
myset = {1, 2, 3}
myset.discard(4) # 不会引发错误
print(myset)
输出:{1,2,3}
clear():清空集合中的所有元素。
myset = {1,2,3}
myset.clear()
print(myset)
输出:set()
copy():创建集合的副本。
myset = {1, 2, 3}
mycopy = myset.copy()
print(mycopy)
print(f’myset id:{id(myset)}’ )
print(f’mycopy id:{id(mycopy)}’ )
输出:{1,2,3}
issubset():检查一个集合是否是另一个集合的子集。
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
result = set1.issubset(set2)
print(result)
用in试试会不会结果一样:
ret1 = set1 in set2
print(ret1)
issuperset():检查一个集合是否是另一个集合的超集。
set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3}
result = set1.issuperset(set2)
print(result)
pop():从集合中随机删除一个元素并返回它。
Set1 = {1, 2, 3, 4, 5,6}
poptt = Set1.pop()
print(poptt)
print(Set1)
输出:
4
{1,2,3,5,6}
update():将一个集合的元素添加到另一个集合中。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.update(set2)
print(set1)
输出:{1,2,3,4,5}
intersection_update():将一个集合更新为另一个集合的交集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.intersection_update(set2)
print(set1)
输出:{3}
symmetric_difference_update():将一个集合更新为与另一个集合的对称差集。set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.symmetric_difference_update(set2)
print(set1)
输出:{1,2,4,5}
difference_update():将一个集合更新为相对于另一个集合的差集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.difference_update(set2)
print(set1)
输出:{1,2}
4、基本函数操作:
max()/min()/sum():
max(iterable) 返回可迭代对象中的最大值。
min(iterable) 返回可迭代对象中的最小值。
sum(iterable) 返回可迭代对象中所有元素的和
numbers = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}
max_value = max(numbers)
min_value = min(numbers)
total = sum(numbers)
print(max_value)
print(min_value)
print(total)
输出:9 1 30
sorted():返回一个按升序排列的包含可迭代对象中所有元素的新列表。可以使用 reverse=True 参数来进行降序排序。
numbers = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}
sorted_numbers = sorted(numbers)
sorted_descending = sorted(numbers, reverse=True)
print(sorted_numbers)
print(sorted_descending)
enumerate():用于将可迭代对象中的元素同时返回索引和值,通常在循环中使用
fruits = {"apple", "banana", "cherry"}
for index, fruit in enumerate(fruits):
print(f"Index {index}: {fruit}")
欢迎点赞、关注、收藏和交流,你的鼓励是我前进的动力!!!