1、集合(set)
集合是无序且无索引的集合。 在Python中,集合用大括号括起来。
例如:
创建集合:
# 使用花括号创建集合
my_set = {1, 2, 3, 4, 5}
print(my_set) # 输出: {1, 2, 3, 4, 5}# 使用 set() 函数创建集合
my_set = set([1, 2, 3, 4, 5])
print(my_set) # 输出: {1, 2, 3, 4, 5}# 创建空集合只能用 set() 函数
empty_set = set()
print(empty_set) # 输出: set()
注意:集合是无序的,不能确定的元素将以什么顺序出现。
2、添加和删除元素
可以使用 add()
方法添加元素,使用 remove()
或 discard()
方法删除元素。
# 添加元素
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 输出: {1, 2, 3, 4}
# 删除元素
my_set.remove(3)
print(my_set) # 输出: {1, 2, 4}
# 删除元素,如果元素不存在不会报错
my_set.discard(5)
print(my_set) # 输出: {1, 2, 4}
使用update()
方法将多个项目添加到集合中:
set1 = {"c", "java", "python"}
set1.update(["js", "cjavapy", "linux"])
print(set1)
注意:如果不存在要删除的项目,remove()
将引发错误。
使用pop()
方法删除最后一项:
set1 = {"c", "java", "python"}
x = set1.pop()
print(x)
print(set1)
注意:集合是无序的,因此,当使用pop()
方法时,您将不知道要删除的项目。
例如:
clear()
方法清空集合:
set1 = {"c", "java", "python"}
set1.clear()
print(set1)
例如:
del
关键字将完全删除该集合:
set1 = {"c", "java", "python"}
del set1
print(set1)
3、集合运算
1)并集
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 使用 | 操作符
union_set = set1 | set2
print(union_set) # 输出: {1, 2, 3, 4, 5}# 使用 union() 方法
union_set = set1.union(set2)
print(union_set) # 输出: {1, 2, 3, 4, 5}
2)交集
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 使用 & 操作符
intersection_set = set1 & set2
print(intersection_set) # 输出: {3}# 使用 intersection() 方法
intersection_set = set1.intersection(set2)
print(intersection_set) # 输出: {3}
3)差集
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 使用 - 操作符
difference_set = set1 - set2
print(difference_set) # 输出: {1, 2}# 使用 difference() 方法
difference_set = set1.difference(set2)
print(difference_set) # 输出: {1, 2}
4)对称差集
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 使用 ^ 操作符
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set) # 输出: {1, 2, 4, 5}# 使用 symmetric_difference() 方法
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set) # 输出: {1, 2, 4, 5}
4、集合的其他操作
1)检查元素是否在集合中
my_set = {1, 2, 3}
print(1in my_set)
# 输出: True
print(4in my_set)
# 输出: False
2)集合长度
my_set = {1, 2, 3}
print(len(my_set)) # 输出: 3
3)清空集合
my_set = {1, 2, 3}
my_set.clear()
print(my_set) # 输出: set()
4)迭代集合
my_set = {1, 2, 3}
for element in my_set:
print(element)
5)冻结集合(frozenset)
冻结集合是不可变的集合,可以作为字典的键或存储在其他集合中。
my_frozenset = frozenset([1, 2, 3])
print(my_frozenset) # 输出: frozenset({1, 2, 3})
# 尝试修改冻结集合会引发错误# my_frozenset.add(4) 、
# AttributeError: 'frozenset' object has no attribute 'add'
5、set()集合构造函数
也可以使用set()
构造函数进行设置。
例如:
使用set()
构造函数创建一个集合:
set1 = set(("c", "java", "python")) # 请注意双括号
print(set1)
6、set集合方法
Python有一组内置方法,可在集合上使用。
方法 | 描述 |
add() | 将元素添加到集合中 |
clear() | 从集合中删除所有元素 |
copy() | 返回集合的副本 |
difference() | Returns a set containing the difference between two or more sets |
difference_update() | 删除此集合中还包含在另一个指定集合中的项目 |
discard() | 删除指定的项目 |
intersection() | 返回一个集合,即另外两个集合的交集 |
intersection_update() | 删除此集合中其他指定集合中不存在的项目 |
isdisjoint() | 返回两个集合是否相交 |
issubset() | 返回另一个集合是否包含此集合 |
issuperset() | 返回此集合是否包含另一个集合 |
pop() | 从集合中删除一个元素 |
remove() | 删除指定的元素 |
symmetric_difference() | 返回具有两组对称差的一组 |
symmetric_difference_update() | 插入此集合和另一个中的对称差 |
union() | 返回一个包含集合并集的集合 |
update() | 使用此集合和其他集合的并集更新集合 |