python3中set(集合)的语法总结分享

  • Post category:Python

Python3中set(集合)的语法总结分享

set 是 Python 中的一种可变容器类型,它是一个无序且不重复的集合,可以进行集合运算,如交集、并集、差集等。

创建集合

创建集合可以使用花括号或 set() 函数,注意空集合只能使用 set() 函数创建。

# 使用花括号创建
fruits = {"apple", "banana", "orange"}

# 使用set()函数创建
nums = set([1, 2, 3, 4, 5])
empty_set = set()

集合运算

Python 中可以对集合进行交集、并集、差集、对称差集等运算。

交集(&)

交集操作符为 & ,它返回两个集合的交集。

fruits1 = {"apple", "banana", "orange", "peach"}
fruits2 = {"banana", "grape", "kiwi", "peach"}
common_fruits = fruits1 & fruits2

# 输出:{'banana', 'peach'}
print(common_fruits)

并集(|)

并集操作符为 | ,它返回两个集合的并集。

fruits1 = {"apple", "banana", "orange", "peach"}
fruits2 = {"banana", "grape", "kiwi", "peach"}
all_fruits = fruits1 | fruits2

# 输出:{'apple', 'banana', 'kiwi', 'orange', 'peach', 'grape'}
print(all_fruits)

差集(-)

差集操作符为 - ,它返回两个集合的差集。

fruits1 = {"apple", "banana", "orange", "peach"}
fruits2 = {"banana", "grape", "kiwi", "peach"}
unique_fruits = fruits1 - fruits2

# 输出:{'orange', 'apple'}
print(unique_fruits)

对称差集(^)

对称差集操作符为 ^ ,它返回两个集合的对称差集。

fruits1 = {"apple", "banana", "orange", "peach"}
fruits2 = {"banana", "grape", "kiwi", "peach"}
symmetric_diff = fruits1 ^ fruits2

# 输出:{'kiwi', 'orange', 'grape', 'apple'}
print(symmetric_diff)

元素操作

可以使用 add() 方法向集合中添加元素,使用 update() 方法向集合中添加多个元素,使用 remove() 方法移除指定元素。

fruits = {"apple", "banana", "orange"}

# 添加单个元素
fruits.add("peach")
# 添加多个元素
fruits.update(["kiwi", "grape"])

# 输出:{'banana', 'grape', 'peach', 'kiwi', 'apple', 'orange'}
print(fruits)

# 移除指定元素
fruits.remove("kiwi")

# 输出:{'banana', 'grape', 'peach', 'apple', 'orange'}
print(fruits)

示例1

下面是一个示例,将两个列表中的元素去重、排序后合并为一个新列表。

list1 = [1, 3, 2, 1, 5, 6, 7]
list2 = [2, 4, 3, 4, 8]

# 利用集合去重并排序
set1 = set(list1)
set2 = set(list2)
new_set = set1 | set2
new_list = sorted(new_set)

# 输出:[1, 2, 3, 4, 5, 6, 7, 8]
print(new_list)

示例2

下面是一个示例,统计一个字符串中每个字符出现的次数。

str1 = "hello, world!"
char_count = {}

# 遍历字符串中每个字符,统计出现次数
for char in str1:
    if char in char_count:
        char_count[char] += 1
    else:
        char_count[char] = 1

# 将结果输出为集合
char_set = set(char_count.items())
print(char_set)

输出结果为:

{('h', 1), ('l', 3), ('d', 1), (' ', 1), ('w', 1), ('r', 1), ('e', 1), ('!', 1), ('o', 2), (',', 1)}

其中每个元素为一个元组,包含字符和出现次数两个信息。