📜  Python集合set(1)

📅  最后修改于: 2023-12-03 14:46:48.179000             🧑  作者: Mango

Python集合set

简介

Python中的集合是一种无序且不重复的集合数据类型,它是由花括号{}包裹的一系列元素组成。

与列表和元组等序列类型不同,集合类型不支持下标索引,因为集合的元素是无序的,即不可以通过索引来获取集合中的元素。但是,集合可以被用来检测某些元素是否在其中,也可以被用来进行数学上的操作,比如交集、并集、并集去重等。

创建集合

可以使用花括号 {} 或内置函数 set() 来创建一个集合。

# 使用花括号创建集合
myset = {"apple", "banana", "cherry"}
print(myset)

# 使用 set() 函数创建集合
myset = set(["apple", "banana", "cherry"])
print(myset)

输出:

{'cherry', 'banana', 'apple'}
{'cherry', 'banana', 'apple'}

需要注意的是,使用花括号创建的集合,如果只有一个元素的话,需要加上逗号。否则,Python会将它视为一个普通的变量。

# 只有一个元素的集合
myset = {"apple",}
print(type(myset))  # <class 'set'>

# 不加逗号的情况下,Python 将其视为一个变量
myset = {"apple"}
print(type(myset))  # <class 'str'>
集合元素的操作
增加元素

可以使用 add() 方法来向集合中添加新元素:

myset = {"apple", "banana", "cherry"}
myset.add("orange")
print(myset)

输出:

{'cherry', 'banana', 'orange', 'apple'}
移除元素

可以使用 remove() 或 discard() 方法从集合中删除元素。两者的区别在于如果元素不存在,remove() 方法会引发 KeyError 异常,而 discard() 方法不会。

myset = {"apple", "banana", "cherry"}
myset.remove("apple")
print(myset)

myset.discard("banana")
print(myset)

myset.remove("orange")  # KeyError: 'orange'
myset.discard("orange")  # 不会报错
随机弹出元素

可以使用 pop() 方法来随机弹出集合中的一个元素,并返回该元素。

myset = {"apple", "banana", "cherry"}
x = myset.pop()
print(x)
清空集合

可以使用 clear() 方法来清空集合中的所有元素。

myset = {"apple", "banana", "cherry"}
myset.clear()
print(myset)

输出:

set()
集合的操作
集合的比较

两个集合可以通过 == 或 != 运算符进行比较,如果集合中的所有元素都相等,则返回 True,否则返回 False。

set1 = {"apple", "banana", "cherry"}
set2 = {"cherry", "banana", "apple"}
set3 = {"apple", "banana", "orange"}

print(set1 == set2)  # True
print(set1 == set3)  # False
集合的运算

可以对集合进行数学上的运算,比如并集、交集、差集等。例如:

set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 并集
print(set1.union(set2))  # {1, 2, 3, 4, 5}

# 交集
print(set1.intersection(set2))  # {3}

# 差集
print(set1.difference(set2))  # {1, 2}
print(set2.difference(set1))  # {4, 5}

# 对称差集(即并集去重后的差集)
print(set1.symmetric_difference(set2))  # {1, 2, 4, 5}
子集与超集

可以通过issubset() 和 issuperset() 方法判断一个集合是否为另一个集合的子集或超集。

set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
set3 = {1, 2}

print(set1.issubset(set2))  # True
print(set1.issubset(set3))  # False
print(set2.issuperset(set1))  # True
print(set3.issuperset(set1))  # False
总结

集合是 Python 中的一种重要的数据类型,它支持数学上的操作,并且可以用于去重和判断某个元素是否在其中。在处理大量数据时,使用集合不仅可以提高效率,而且可以让代码更简洁易读。