当前位置: 首页 > news >正文

Python数据结构:集合详解(创建、集合操作)④

在这里插入图片描述

文章目录

      • 1. Python集合概述
      • 2. 创建集合
        • 2.1 使用花括号 `{}` 创建集合
        • 2.2 使用 `set()` 函数创建集合
        • 2.3 创建空集合
      • 3. 集合操作
        • 3.1 添加和删除元素
        • 3.2 集合的基本操作
        • 3.3 集合的比较操作
        • 3.4 不可变集合(frozenset)
      • 4. 综合例子:图书管理系统

Python集合是一种无序、不重复元素的集。集合操作在处理数据的去重、成员关系测试等方面非常高效。本文将详细介绍Python集合的创建和各种集合操作,最后附上一个综合详细的例子,帮助您全面掌握Python集合的用法。

1. Python集合概述

集合(set)是Python内置的数据类型之一,用于存储多个不重复的元素。集合中的元素必须是可哈希的(immutable),这意味着列表和字典不能作为集合的元素,但元组可以。

2. 创建集合

2.1 使用花括号 {} 创建集合

最常用的创建集合的方法是使用花括号 {}

# 创建一个包含若干整数的集合
numbers = {1, 2, 3, 4, 5}
print(numbers)  # 输出: {1, 2, 3, 4, 5}
2.2 使用 set() 函数创建集合

可以使用 set() 函数将其他数据类型转换为集合。

# 从列表创建集合
numbers_list = [1, 2, 3, 4, 5, 5]
numbers_set = set(numbers_list)
print(numbers_set)  # 输出: {1, 2, 3, 4, 5}# 从字符串创建集合
string_set = set("hello")
print(string_set)  # 输出: {'h', 'e', 'l', 'o'}
2.3 创建空集合

创建空集合时,必须使用 set() 函数,而不是 {},因为 {} 会创建一个空字典。

# 创建空集合
empty_set = set()
print(empty_set)  # 输出: set()

3. 集合操作

3.1 添加和删除元素

集合支持添加和删除元素的操作。

# 添加元素
fruits = {"apple", "banana"}
fruits.add("cherry")
print(fruits)  # 输出: {'banana', 'cherry', 'apple'}# 删除元素
fruits.remove("banana")
print(fruits)  # 输出: {'cherry', 'apple'}# 使用 discard 删除元素,如果元素不存在也不会报错
fruits.discard("banana")
print(fruits)  # 输出: {'cherry', 'apple'}# 使用 pop 删除并返回一个随机元素
popped_fruit = fruits.pop()
print(popped_fruit)  # 输出: cherry (结果可能不同)
print(fruits)  # 输出: {'apple'} (结果可能不同)
3.2 集合的基本操作

集合支持一系列基本操作,如并集、交集、差集和对称差集。

set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}# 并集
union_set = set_a | set_b
print(union_set)  # 输出: {1, 2, 3, 4, 5, 6}# 交集
intersection_set = set_a & set_b
print(intersection_set)  # 输出: {3, 4}# 差集
difference_set = set_a - set_b
print(difference_set)  # 输出: {1, 2}# 对称差集
symmetric_difference_set = set_a ^ set_b
print(symmetric_difference_set)  # 输出: {1, 2, 5, 6}
3.3 集合的比较操作

集合之间可以进行各种比较操作。

set_a = {1, 2}
set_b = {1, 2, 3, 4}# 子集
is_subset = set_a <= set_b
print(is_subset)  # 输出: True# 真子集
is_proper_subset = set_a < set_b
print(is_proper_subset)  # 输出: True# 超集
is_superset = set_b >= set_a
print(is_superset)  # 输出: True# 真超集
is_proper_superset = set_b > set_a
print(is_proper_superset)  # 输出: True
3.4 不可变集合(frozenset)

Python 提供了 frozenset,一种不可变的集合。一旦创建,frozenset 中的元素就不能被改变。

# 创建 frozenset
immutable_set = frozenset([1, 2, 3, 4])
print(immutable_set)  # 输出: frozenset({1, 2, 3, 4})# 尝试添加元素会报错
# immutable_set.add(5)  # AttributeError: 'frozenset' object has no attribute 'add'

4. 综合例子:图书管理系统

以下是一个图书管理系统的例子,展示了集合在处理图书标签中的应用。

class Library:def __init__(self):self.books = {}def add_book(self, title, author, year, tags):"""添加图书信息:param title: 图书标题:param author: 图书作者:param year: 出版年份:param tags: 图书标签(集合)"""if title in self.books:print(f"书籍 '{title}' 已存在。")else:self.books[title] = {"author": author,"year": year,"tags": set(tags)}print(f"书籍 '{title}' 添加成功。")def remove_book(self, title):"""删除图书信息:param title: 图书标题"""if title in self.books:del self.books[title]print(f"书籍 '{title}' 已删除。")else:print(f"书籍 '{title}' 未找到。")def update_tags(self, title, new_tags):"""更新图书标签:param title: 图书标题:param new_tags: 新标签(集合)"""if title in self.books:self.books[title]["tags"].update(new_tags)print(f"书籍 '{title}' 的标签已更新。")else:print(f"书籍 '{title}' 未找到。")def search_by_tag(self, tag):"""根据标签搜索图书:param tag: 标签:return: 包含该标签的图书列表"""result = [title for title, info in self.books.items() if tag in info["tags"]]return resultdef display_books(self):"""显示所有图书信息"""if not self.books:print("图书馆中没有书籍。")else:for title, info in self.books.items():print(f"标题: {title}, 作者: {info['author']}, 出版年份: {info['year']}, 标签: {info['tags']}")# 创建图书馆实例
library = Library()# 添加图书
library.add_book("Python编程", "Guido van Rossum", 1991, {"编程", "Python", "计算机"})
library.add_book("学习Python", "Mark Lutz", 2013, {"编程", "Python", "教程"})
library.add_book("深入理解计算机系统", "Randal E. Bryant", 2015, {"计算机", "系统", "基础"})# 更新标签
library.update_tags("Python编程", {"经典", "入门"})# 搜索图书
search_result = library.search_by_tag("Python")
print("包含标签 'Python' 的书籍:", search_result)# 显示所有图书
library.display_books()

运行结果如下:
在这里插入图片描述

在这个综合详细的例子中,我们实现了一个简单的图书管理系统,展示了集合在处理图书标签中的应用。通过这个例子,我们可以看到集合的创建、操作和应用场景。希望本文对您理解和应用Python集合有所帮助。


欢迎点赞|关注|收藏|评论,您的肯定是我创作的动力

在这里插入图片描述


http://www.mrgr.cn/news/4080.html

相关文章:

  • 基于深度学习的环境感知系统
  • CSS的:required和:optional伪类:提升表单可访问性与用户体验
  • Java实现STL中的全排列函数next_permutation()
  • Frida 的使用
  • 9、Flink SQL 流式概念之状态管理详解
  • 力扣第六十一题——旋转链表
  • 计算机网络12——IM聊天系统——项目分析和架构搭建
  • OpenCTI:开源网络威胁情报平台
  • Milvus 安装、设置权限和使用
  • [数据集][目标检测]竹子甘蔗发芽缺陷检测数据集VOC+YOLO格式2953张3类别
  • SpringBoot和Redis的交互数据操作 以及 Redis的持久化/删除策略和缓存问题
  • 音频转换软件有哪些?音乐爱好者无偿分享5款一键音频转格式神器
  • EmguCV学习笔记 C# 5.3 透视变换
  • 向量数据库Faiss(Facebook AI Similarity Search)
  • 免费高画质提取PPT/Word/Excel中的图片工具
  • 亲测解决Ubuntu和windows双系统时间不一致
  • VUE3 无法修改 el-dialog 样式
  • 家政预约小程序源码+快速搭建全攻略
  • 【算法】C程序的运行速度测试
  • Linux shell编程学习笔记74:sed命令——沧海横流任我行(中)