set()
函数创建的集合具有以下特点:
-
无序性(Unordered):集合中的元素没有固定的顺序,每次输出的顺序可能不同。
-
唯一性(Unique):集合中的元素是唯一的,重复的元素会被自动去重,确保集合中不包含重复的元素。
-
不可变性(Immutable):集合中的元素必须是可哈希的,因此集合中不能包含可变对象,如列表、字典等。但集合本身是可变的,可以动态地添加、删除元素。
-
快速查找(Fast lookup):集合是基于哈希表实现的,因此查找集合中是否包含某个元素的操作非常高效,时间复杂度为 O(1)。
-
集合运算(Set operations):集合支持多种集合运算,如并集、交集、差集等,可以方便地进行集合间的操作和计算。
集合和字典的区别(尤其是创建空集合,而且集合类似于字典,但是只有key,没有value):
使用大括号 {}
:
my_set = {}
print(type(my_set))
# 输出:<class 'dict'>
这种方法创建的对象是一个空的字典,而不是空的集合。
使用 set()
函数:
my_set = set()
print(type(my_set))
# 输出:<class 'set'>
集合操作函数如下:
difference()
set1={1,2,3,4,5}
set2={1,2,3,4}
print(set1.difference(set2)) # 实际上就是set1-set2;答案为{5}
set1={1,2,3}
set2={1,2,3,4}
print(set1.difference(set2)) #答案为 set(),因为返回一个set1存在的set2不存在的没有,于是返回一个空集合 那就是set()
set1={1,2,3,4,5}
set2={1,2,3,4}
print(set1-set2) 和
set1={1,2,3,4,5}
set2={1,2,3,4}
print(set1.difference(set2))
的有区别
在Python中,set1 - set2
和 set1.difference(set2)
都可以用来计算两个集合的差集,但是它们的使用方式略有不同。
-
使用
-
运算符:set1 - set2
表示从set1
中移除与set2
中相同的元素,并返回结果。这种语法更类似于数学上的集合运算。- 示例:
print(set1 - set2)
将打印出{5}
,即set1
中存在而set2
中不存在的元素。
-
使用
difference()
方法:set1.difference(set2)
也表示从set1
中移除与set2
中相同的元素,并返回结果。但这是一个方法调用,需要通过调用对象来调用。- 示例:
print(set1.difference(set2))
也将打印出{5}
,与上面的示例相同。
总体上说,这两种方法的作用是相同的,都是计算两个集合的差集。使用哪种方法取决于你的个人偏好和代码上下文。
inetrsection()
set1={1,2,3,4,5}
set2={1,2,3,4}
print(set1.intersection(set2))
print(set1&set2)
union()
set1={1,2,3,4,5}
set2={1,2,3,4}
print(set1.union(set2))
print(set1|set2)
discard()
discard()
方法用于移除集合中的指定元素。如果元素在集合中存在,则移除该元素,如果不存在,则不执行任何操作。
# 创建一个集合
my_set = {1, 2, 3, 4, 5}
# 移除元素 3
my_set.discard(3)
print(my_set) # 输出: {1, 2, 4, 5}
# 尝试移除一个不存在的元素
my_set.discard(6)
print(my_set) # 输出: {1, 2, 4, 5},6并不会被添加到集合中
discard()
方法与 remove()
方法类似,但区别在于当要移除的元素不存在时,remove()
方法会引发 KeyError 异常,而 discard()
方法不会引发异常。
update()
update()
方法用于将一个集合的元素添加到另一个集合中。如果有重复的元素,只会添加一个副本。
# 创建两个集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 将 set2 的元素添加到 set1 中
set1.update(set2)
print(set1) # 输出: {1, 2, 3, 4, 5}