Python实现集合典型应用
任务要求
1.初始化与基本操作:创建一个包含多个元素的集合,并展示其初始化过程。
2.集合运算:实现两个集合的交集、并集、差集和对称差集运算。
3.去重:通过集合实现列表去重。
4.统计与遍历:统计集合的长度,并遍历集合中的所有元素。
5.实际应用:通过集合实现一个简单的数据处理任务(如统计学生选课情况)。
任务分析
集合是Python中一种高效的数据结构,其核心特点包括元素唯一性、无序性和支持快速的成员测试。
任务实现
1.集合的初始化与基本操作
# 初始化一个包含重复元素的列表,并将其转换为集合
fruits = ["apple", "banana", "apple", "orange", "banana"]
unique_fruits = set(fruits)
print("集合初始化结果:", unique_fruits)
# 添加单个元素
unique_fruits.add("grape")
print("添加葡萄后:", unique_fruits)
# 添加多个元素
unique_fruits.update(["mango", "kiwi"])
print("添加芒果和猕猴桃后:", unique_fruits)
# 删除元素
unique_fruits.remove("apple") # 删除指定元素
print("删除苹果后:", unique_fruits)
运行结果:
集合初始化结果: {'orange', 'apple', 'banana'}
添加葡萄后: {'orange', 'apple', 'grape', 'banana'}
添加芒果和猕猴桃后: {'grape', 'apple', 'orange', 'mango', 'kiwi', 'banana'}
删除苹果后: {'grape', 'orange', 'mango', 'kiwi', 'banana'}
进程已结束,退出代码为 0
说明:
- 使用set()函数将列表转换为集合,自动去除重复元素。
- add()方法用于添加单个元素,update()方法用于添加多个元素。
- remove()方法用于删除指定元素。
2.集合运算
# 创建两个集合
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}
# 交集:同时属于 set_a 和 set_b 的元素
intersection = set_a & set_b
print("交集结果:", intersection)
# 并集:属于 set_a 或 set_b 的所有元素
union = set_a | set_b
print("并集结果:", union)
# 差集:属于 set_a 但不属于 set_b 的元素
difference = set_a - set_b
print("差集结果:", difference)
# 对称差集:属于 set_a 或 set_b 但不同时属于两者
symmetric_difference = set_a ^ set_b
print("对称差集结果:", symmetric_difference)
运行结果:
交集结果: {3, 4}
并集结果: {1, 2, 3, 4, 5, 6}
差集结果: {1, 2}
对称差集结果: {1, 2, 5, 6}
进程已结束,退出代码为 0
说明:
集合支持多种数学运算:
- &表示交集。
- |表示并集。
- -表示差集。
- ^表示对称差集。
这些运算符提供了简洁高效的方式来处理集合关系。
3.集合去重
# 创建一个包含重复元素的列表
numbers = [1, 2, 2, 3, 4, 4, 5, 5]
# 使用集合去重并转换回列表
unique_numbers = list(set(numbers))
print("去重后的结果:", unique_numbers)
运行结果:
去重后的结果: [1, 2, 3, 4, 5]
进程已结束,退出代码为 0
说明:
- 将列表转换为集合可以快速去除重复元素。
- 如果需要保留顺序,可以使用dict.fromkeys()方法
4.统计与遍历
# 初始化一个包含重复元素的列表,并将其转换为集合
fruits = ["apple", "banana", "apple", "orange", "banana"]
unique_fruits = set(fruits)
print("集合初始化结果:", unique_fruits)
# 统计集合的长度
print("\n集合长度:", len(unique_fruits))
# 遍历集合中的所有元素
print("\n遍历结果:")
for fruit in unique_fruits:
print(fruit)
运行结果:
集合初始化结果: {'banana', 'apple', 'orange'}
集合长度: 3
遍历结果:
banana
apple
orange
进程已结束,退出代码为 0
说明:
- len()函数用于统计集合的长度。
- 使用for循环遍历集合中的所有元素。
5.实际应用:统计学生选课情况
# 学生选课记录(模拟数据)
student_courses = [
{"id": 1, "courses": ["Math", "English", "Physics"]},
{"id": 2, "courses": ["Math", "Chemistry"]},
{"id": 3, "courses": ["English", "Biology"]},
{"id": 4, "courses": ["Math", "English"]}
]
# 统计所有课程的出现次数
course_count = {}
for student in student_courses:
for course in student["courses"]:
if course in course_count:
course_count[course] += 1
else:
course_count[course] = 1
# 找出选修人数最多的课程
most_popular_course = max(course_count, key=course_count.get)
print("选修人数最多的课程:", most_popular_course)
print("课程选修人数统计:", course_count)
运行结果:
选修人数最多的课程: Math
课程选修人数统计: {'Math': 3, 'English': 3, 'Physics': 1, 'Chemistry': 1, 'Biology': 1}
进程已结束,退出代码为 0
说明:
- 使用字典course_count统计每门课程的选修次数。
- 使用max()函数结合key参数找出选修人数最多的课程。
- 这个案例展示了集合在数据统计和处理中的灵活性。