Python集合的创建

一、前言

在 Python 编程中,集合(set)是一种非常实用的数据结构,它能够存储一组无序且不重复的元素。集合广泛应用于数据去重、交并差运算等场景。

本文将重点讲解 Python 中集合的创建方式,包括使用大括号 {}set() 函数、从其他序列转换等多种方法,并通过丰富的代码示例帮助你掌握其用法。

二、什么是集合?

✅ 定义:

集合是 Python 中的一种可变数据类型,表示为 set,用于存储无序且不重复的元素集合

⚠️ 特点:

  • 元素不可重复
  • 无索引,不能通过下标访问
  • 支持数学集合操作(如并集、交集、差集)
  • 可动态添加或删除元素

三、Python 集合的创建方式

✅ 1. 使用大括号 {} 创建集合

s = {1, 2, 3, 4}
print(s)  # 输出: {1, 2, 3, 4}

⚠️ 注意事项:

  • 空集合不能用 {},这会创建一个空字典(dict)!
empty_dict = {}       # 空字典
empty_set = set()     # 空集合

✅ 2. 使用 set() 函数创建集合

这是最常用的方式之一,尤其适用于将其他序列(如列表、字符串、元组)转换为集合。

示例:
# 从列表转集合
s1 = set([1, 2, 3, 2])
print(s1)  # 输出: {1, 2, 3}# 从字符串转集合
s2 = set("hello")
print(s2)  # 输出: {'h', 'e', 'l', 'o'}# 从元组转集合
s3 = set((1, 2, 3, 2))
print(s3)  # 输出: {1, 2, 3}

✅ 3. 使用推导式创建集合(Set Comprehension)

类似于列表推导式,集合也支持推导式语法,用于快速生成集合。

示例:
# 生成 0~9 的平方集合
squares = {x**2 for x in range(10)}
print(squares)
# 输出: {0, 1, 64, 4, 36, 9, 16, 49, 25, 81}

✅ 4. 从其他集合创建新集合

你可以通过复制、合并等方式创建新的集合。

示例:
a = {1, 2, 3}
b = set(a)  # 复制集合 a
c = a.copy()  # 同样复制print(b)  # 输出: {1, 2, 3}
print(c)  # 输出: {1, 2, 3}

✅ 5. 使用集合运算创建新集合

可以通过集合运算符或方法来创建新的集合。

a = {1, 2, 3}
b = {3, 4, 5}# 并集
union_set = a | b
print(union_set)  # 输出: {1, 2, 3, 4, 5}# 交集
intersection_set = a & b
print(intersection_set)  # 输出: {3}

四、创建集合时的常见问题与注意事项

场景建议
是否可以包含列表?❌ 不可以,集合中的元素必须是不可变类型(如数字、字符串、元组)
是否可以嵌套集合?❌ 不允许直接嵌套普通集合(可用 frozenset 替代)
如何判断是否为空集合?✅ 使用 not s 或 len(s) == 0
创建集合时顺序是否保留?❌ 集合是无序的,输出顺序可能不同

五、集合与其他数据结构的对比(创建方式)

类型创建方式示例是否可变是否允许重复
列表(list[] / list()[1, 2, 3]✅ 是✅ 允许
元组(tuple() / tuple()(1, 2, 3)❌ 否✅ 允许
字典(dict{} / dict(){'a': 1, 'b': 2}✅ 是(值可变)❌ 键不允许重复
集合(setset() / {}{1, 2, 3}✅ 是❌ 不允许重复

六、实际应用示例

✅ 示例1:去除列表中的重复项

nums = [1, 2, 2, 3, 4, 4, 5]
unique_nums = list(set(nums))
print(unique_nums)  # 输出: [1, 2, 3, 4, 5](顺序可能变化)

⚠️ 注意:如果需要保留原始顺序,应避免使用 set() 直接转换。

✅ 示例2:从字符串提取唯一字符

text = "hello world"
unique_chars = set(text.replace(" ", ""))
print(unique_chars)
# 输出: {'w', 'r', 'd', 'l', 'o', 'h', 'e'}

✅ 示例3:用户标签去重统计

user1_tags = ["python", "web", "data"]
user2_tags = ["java", "web", "mobile"]all_tags = set(user1_tags + user2_tags)
print(all_tags)
# 输出: {'python', 'web', 'data', 'java', 'mobile'}

七、冻结集合(frozenset)

如果你希望创建一个不可变的集合,可以使用 frozenset()

fs = frozenset([1, 2, 3])
print(fs)  # 输出: frozenset({1, 2, 3})
fs.add(4)  # 报错:AttributeError: 'frozenset' object has no attribute 'add'

✅ 优势:

  • 可作为字典的键
  • 可作为其他集合的元素

八、总结对比表:集合的创建方式

创建方式语法是否推荐说明
使用 {}{1, 2, 3}✅ 推荐快速创建非空集合
使用 set()set([1, 2, 3])✅ 推荐更通用,适用于任何可迭代对象
集合推导式{x**2 for x in range(10)}✅ 推荐快速构造集合
从已有集合复制set(a) / a.copy()✅ 推荐安全地复制集合
使用集合运算`ab/a.union(b)`✅ 推荐
冻结集合frozenset([1, 2, 3])✅ 推荐创建不可变集合

九、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86998.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作物生长模型Oryza V3实战15:AutoCalibration程序详解

ORYZA 模型中的 AutoCalibration (v2.1).exe 是用于 ORYZA 模型参数自动校准的可执行程序,在优化 ORYZA 模型参数、提高模型模拟准确性方面具有重要作用。程序能够通过特定算法,在给定的参数取值范围内,自动搜索出一组最优的参数组合,使得模型模拟结果与实际观测数据(如作…

算法-每日一题(DAY12)最长和谐子序列

1.题目链接: 594. 最长和谐子序列 - 力扣(LeetCode) 2.题目描述: 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 给你一个整数数组 nums ,请你在所有可能的 子序列 中找到最长的和谐子序列的…

阿里云-云效自动部署spring boot项目

1.使用云效通过docker自动部署spring boot项目 1.1 spring boot项目配置 # 阿里云的jdk17镜像 FROM registry.cn-zhangjiakou.aliyuncs.com/publicci/openjdk:17-jdk-alpineENV APP_HOME /home/admin/app/# 将target/arms-application.jar 复制到容器中 /home/admin/app/app.…

SQL篇 添加约束、删除约束

SQL篇 添加约束、删除约束 1、相关链接2、约束的增删找查2.1 查看约束(主键、外键、唯一性、检查约束)2.2 查看默认约束2.3 修改约束(添加/编辑/修改)2.3.1 添加主键约束2.3.2 添加外键约束2.3.3 添加唯一性约束2.3.4 添加检查约束…

Python PyTorch 深度学习库 包 timm

文章目录 📦 主要特点🚀 安装方式🧪 使用示例示例1:加载一个预训练模型进行图像分类示例2:获取模型结构信息 🌐 官方资源🔍 常见用途✅ 优势总结 Timm 是一个非常流行且功能强大的 Python 深度学…

tree 命令集成到 Git Bash:可视化目录结构的指南

目录 1. 下载与准备 tree 工具   2. 集成 tree 到 Git Bash 环境   3. tree 命令基础用法详解   4. 使用示例 在软件开发和文件管理中,清晰的目录结构可视化是提高效率的重要手段。tree命令作为 UNIX/Linux 系统的标准工具,能以树形结构递归展…

如何搭建基于RK3588的边缘服务器集群?支持12个RK3588云手机

以下是基于RK3588搭建边缘服务器集群的完整实施方案,涵盖硬件选型、集群架构、软件部署及优化要点: 🖥️ ‌一、硬件集群架构设计‌ ‌节点基础配置‌ ‌核心单元‌:单节点采用RK3588核心板(4A762.4GHz 4A551.8GHz&am…

飞算 JavaAI:我的编程强力助推引擎

文章目录 引言:当Java开发遇上AI助手初识飞算JavaAI:专为Java而生的智能伴侣安装与配置:轻松上手的开始核心功能体验:从需求到代码的全流程革命1. 智能需求分析与拆解2. 智能接口设计3. 表结构智能生成4. 处理逻辑自动梳理5. 高质…

飞算JavaAI—AI编程助手 | 编程领域的‘高科技指南针’,精准导航开发!

目录 一、引言 1.1 什么是飞算JavaAI? 1.2 告别"996的孤独感":AI成为你的编码搭子 1.3 成就感加速器:从"能运行"到"优雅实现" 1.4 极简下载体验:3步开启"开挂"模式 二、深入体验飞…

NPM组件 betsson 等窃取主机敏感信息

【高危】NPM组件 betsson 等窃取主机敏感信息 漏洞描述 当用户安装受影响版本的 betsson 组件包时会窃取用户的主机名、用户名、工作目录、IP地址等信息并发送到攻击者可控的服务器地址。 MPS编号MPS-2nrw-lifd处置建议强烈建议修复发现时间2025-06-30投毒仓库npm投毒类型主…

Apipost 与 Apifox:API 开发管理中的 AI 能力对比

在当今竞争激烈的 API 开发与测试领域,效率与质量是衡量工具优劣的关键指标。Apipost 凭借其强大的 AI 功能,为开发者和测试人员带来了前所未有的便利,而 Apifox 作为该领域的重要参与者,二者在实际应用中究竟有何差异&#xff1f…

Electron 菜单栏深度定制指南:从基础到高级实践

在现代桌面应用开发中,菜单栏作为用户界面的重要组成部分,不仅提供了应用功能的快速访问途径,还直接影响着用户的操作体验。Electron 作为跨平台桌面应用开发框架,为开发者提供了强大而灵活的菜单系统定制能力。本文将全面介绍 El…

QML通过XMLHttpRequest实现HTTP通信

转自个人博客 由于 QML 的 JavaScript 兼容性,我们可以直接使用 JavaScript 的 XMLHttpRequest 对象进行 HTTP 请求。QML 的 XMLHttpRequest 实现与标准浏览器的实现非常相似,但有一些限制和特殊行为需要注意。 而QML实现TCP等其他通信一般就需要借助Qt与…

Spring Boot 内置反向代理(Undertow Proxy)高可用配置

引言 在微服务架构中,反向代理是一个不可或缺的组件,它负责请求转发、负载均衡、安全过滤等关键功能。 通常我们会选择 Nginx、HAProxy 等专业反向代理组件,但在某些场景下,使用 Spring Boot 内置的反向代理功能可以简化架构&am…

ClickHouse 部署

Docker 部署 1、拉取镜像 docker pull clickhouse/clickhouse-server:latest单机版本部署 编写docker-compose.yml version: 3services:clickhouse-server:image: clickhouse/clickhouse-server:22.12container_name: clickhouse-serverports:- "8123:8123"ulimit…

Fiddler中文版抓包工具如何帮助前端开发者高效调试

前端开发早已不再是“写好页面就完事”的工作。随着业务复杂度提升,前端开发者需要直面接口联调、性能优化、跨域排查、HTTPS调试等一系列和网络请求紧密相关的任务。抓包工具成为这些环节中不可替代的得力助手,而 Fiddler抓包工具 因其全面的功能和灵活…

WTL 之trunk技术学习

相比于MFC的消息机制,WTL/ATL的实现更加优雅。后者将win32 API与面向对象技术完美地结合起来,去掉了庞杂的MFC依赖,生成的软件体积更小,运行速度更快。在其中,如何将窗口函数转变为对窗口对象成员函数的调用&#xff0…

Linux——11.软件安装与包管理

Linux 与 Windows 系统在软件安装方式上的差异 Linux: Linux 通过 包管理系统(如 Debian 的 apt、Red Hat 的 yum/dnf)将软件打包为二进制安装包(如 .deb、.rpm),每个包包含程序文件、依赖关系和元数据。包管理系统负责统一管理软件的安装、更新、卸载,并自动处理依赖关…

无人机用shell远程登录机载电脑,每次需要环境配置原因

原因: 终端分为“登录 shell”和“非登录 shell”: - 登录 shell(如开机登录、远程 SSH 连接)会加载 .profile 或 .bash_profile 。 - 非登录 shell(如打开新终端窗口)会加载 .bashrc 。 - 如果环境变量…

HarmonyOS5 折叠屏适配测试:验证APP在展开/折叠状态下的界面自适应,以及会出现的问题

以下是HarmonyOS5折叠屏应用在展开/折叠状态下的UI自适应测试方案及技术实现要点: 一、核心测试维度 ‌状态连续性验证‌ 页面滚动位置保持(需通过display.on(foldStatusChange)监听状态并保存/恢复滚动位置)输入内容保留(使用…