【Python 学习 / 4】基本数据结构之 字符串 与 集合
文章目录
- 1. 字符串概念
- 1.1 字符串的创建
- 1.2 字符串的访问和操作
- 1.2.1 下标访问
- 1.2.2 切片操作
- 1.2.3 字符串的拼接和重复
- 1.2.4 字符串的长度
- 1.3 字符串的方法
- 1.4 字符串的查找和替换
- 1.5 字符串格式化
- 1.5.1 使用 `%` 运算符
- 1.5.2 使用 `str.format()`
- 1.5.3 使用 f-string(Python 3.6 及以上版本)
- 1.6 字符串的编码和解码
- 2. 集合概念
- 2.1 集合的创建
- 2.2 集合的基本操作
- 2.2.1 添加元素
- 2.2.2 删除元素
- 2.2.3 集合的运算
- 2.2.4 集合的遍历
- 2.3 集合的判断
- 2.4 集合的清空和复制
- 2.5 集合的特点
1. 字符串概念
1.1 字符串的创建
字符串(String)是由一系列字符组成的数据类型。在Python中,字符串是不可变类型,即一旦创建就不能修改其中的字符。
可以使用单引号 '
或双引号 "
来创建字符串,也可以使用三引号(单引号或双引号)来创建多行字符串。
# 单引号创建字符串
a = 'hello'
print(type(a)) # <class 'str'># 双引号创建字符串
b = "world"
print(type(b)) # <class 'str'># 多行字符串,使用三引号
c = '''This is
a multi-line
string'''
print(c)
1.2 字符串的访问和操作
1.2.1 下标访问
字符串可以通过下标来访问每个字符。下标从0开始,也可以使用负数下标来从末尾访问字符。
a = "hello"
print(a[0]) # h
print(a[-1]) # o
1.2.2 切片操作
字符串支持切片操作,可以截取字符串的一部分。切片语法类似于列表:a[start:end:step]
。
a = "hello"
print(a[1:4]) # "ell"
print(a[:3]) # "hel"
print(a[::2]) # "hlo"
1.2.3 字符串的拼接和重复
使用 +
运算符可以拼接字符串,使用 *
运算符可以重复字符串。
a = "hello"
b = "world"
print(a + " " + b) # "hello world"
print(a * 3) # "hellohellohello"
1.2.4 字符串的长度
使用 len()
函数可以获取字符串的长度。
a = "hello"
print(len(a)) # 5
1.3 字符串的方法
字符串提供了许多常用的方法,以下是一些常用的字符串方法:
lower()
:将字符串转换为小写。upper()
:将字符串转换为大写。strip()
:去除字符串两端的空格。replace()
:替换字符串中的指定字符。split()
:将字符串按照指定的分隔符拆分成列表。
a = " Hello World "
print(a.lower()) # "hello world"
print(a.upper()) # "HELLO WORLD"
print(a.strip()) # "Hello World"
print(a.replace("World", "Python")) # " Hello Python "
print(a.split()) # ['Hello', 'World']
1.4 字符串的查找和替换
in
和not in
:用来判断子字符串是否存在于字符串中。find()
:返回子字符串第一次出现的位置,如果不存在返回-1
。count()
:返回子字符串在字符串中出现的次数。
a = "hello world"
print("world" in a) # True
print(a.find("world")) # 6
print(a.count("l")) # 3
1.5 字符串格式化
Python支持字符串格式化,通过%
运算符或str.format()
方法来实现。
1.5.1 使用 %
运算符
name = "John"
age = 25
print("My name is %s and I am %d years old." % (name, age))
1.5.2 使用 str.format()
print("My name is {} and I am {} years old.".format(name, age))
1.5.3 使用 f-string(Python 3.6 及以上版本)
print(f"My name is {name} and I am {age} years old.")
1.6 字符串的编码和解码
Python中的字符串是Unicode编码,而在处理文件或者网络通信时,可能需要将字符串转化为字节流(bytes)。可以使用encode()
方法将字符串编码为字节流,使用decode()
方法将字节流解码为字符串。
a = "hello"
b = a.encode('utf-8') # 编码为字节流
print(b) # b'hello'
c = b.decode('utf-8') # 解码回字符串
print(c) # hello
2. 集合概念
2.1 集合的创建
集合(Set)是一种无序、不重复的元素集合。在Python中,集合是可变的数据类型,集合的元素必须是不可变类型(如数字、字符串、元组等)。集合不支持索引、切片和其他序列类的操作。
集合可以通过花括号 {}
或者 set()
函数来创建。
# 使用花括号创建集合
a = {1, 2, 3, 4, 5}
print(type(a)) # <class 'set'># 使用 set() 函数创建集合
b = set([1, 2, 3, 4, 5])
print(type(b)) # <class 'set'>
2.2 集合的基本操作
2.2.1 添加元素
使用 add()
方法向集合中添加元素。如果元素已经存在,集合不会添加重复的元素。
a = {1, 2, 3}
a.add(4)
a.add(2) # 不会重复添加2
print(a) # {1, 2, 3, 4}
2.2.2 删除元素
可以使用 remove()
或 discard()
方法删除集合中的元素。remove()
在元素不存在时会抛出异常,而 discard()
如果元素不存在则不会做任何操作。
a = {1, 2, 3, 4}
a.remove(3) # 删除元素3
# a.remove(5) # 如果元素5不存在会抛出 KeyError 异常
a.discard(5) # 不会抛出异常
print(a) # {1, 2, 4}
2.2.3 集合的运算
集合支持一些常见的数学运算,比如并集、交集、差集等。
|
:并集&
:交集-
:差集^
:对称差集(即两个集合中不重复的元素)
a = {1, 2, 3}
b = {3, 4, 5}print(a | b) # 并集 {1, 2, 3, 4, 5}
print(a & b) # 交集 {3}
print(a - b) # 差集 {1, 2}
print(a ^ b) # 对称差集 {1, 2, 4, 5}
2.2.4 集合的遍历
可以使用 for
循环遍历集合中的元素。
a = {1, 2, 3, 4}
for elem in a:print(elem)
2.3 集合的判断
in
:判断一个元素是否存在于集合中。not in
:判断一个元素是否不在集合中。
a = {1, 2, 3, 4}
print(2 in a) # True
print(5 not in a) # True
2.4 集合的清空和复制
- 使用
clear()
方法清空集合。 - 使用
copy()
方法复制集合。
a = {1, 2, 3}
b = a.copy() # 复制集合
a.clear() # 清空集合
print(a) # set()
print(b) # {1, 2, 3}
2.5 集合的特点
- 无序性:集合中的元素没有顺序。
- 唯一性:集合中的元素是唯一的,不能重复。
a = {1, 2, 3, 3, 4}
print(a) # {1, 2, 3, 4},自动去重
集合是非常适合用于去重和进行集合运算的工具,可以高效地进行元素的查找、插入、删除等操作。
相关文章:
【Python 学习 / 4】基本数据结构之 字符串 与 集合
文章目录 1. 字符串概念1.1 字符串的创建1.2 字符串的访问和操作1.2.1 下标访问1.2.2 切片操作1.2.3 字符串的拼接和重复1.2.4 字符串的长度 1.3 字符串的方法1.4 字符串的查找和替换1.5 字符串格式化1.5.1 使用 % 运算符1.5.2 使用 str.format()1.5.3 使用 f-string࿰…...
Spring框架中都用到了哪些设计模式?
大家好,我是锋哥。今天分享关于【Spring框架中都用到了哪些设计模式?】面试题。希望对大家有帮助; Spring框架中都用到了哪些设计模式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring框架中使用了大量的设计模…...
HBuilderX中uni-app打开页面时,如何用URL传递参数,Query参数传递
HBuilderX中uni-app打开页面时,如何用URL传递参数,Query参数传递? URL是一种描述文件在计算机网络中位置的方式。在web开发中,可以通过query string来传递参数。使用uniapp进行开发,打开不同的页面时,本文介绍给所要打…...
【开源向量数据库】Milvus简介
Milvus 是一个开源、高性能、可扩展的向量数据库,专门用于存储和检索高维向量数据。它支持近似最近邻搜索(ANN),适用于图像检索、自然语言处理(NLP)、推荐系统、异常检测等 AI 应用场景。 官网:…...
c/c++蓝桥杯经典编程题100道(19)汉诺塔问题
汉诺塔问题 ->返回c/c蓝桥杯经典编程题100道-目录 目录 汉诺塔问题 一、题型解释 二、例题问题描述 三、C语言实现 解法1:递归法(难度★) 解法2:迭代法(难度★★★) 四、C实现 解法1࿱…...
CSS盒模
CSS盒模型就像一个快递包裹,网页上的每个元素都可以看成是这样一个包裹,它主要由以下几个部分组成: 内容(content):就像包裹里真正装的东西,比如文字、图片等。在CSS里,可用width&a…...
【go语言规范】关于接口设计
抽象应该被发现,而不是被创造。为了避免不必要的复杂性,需要时才创建接口,而不是预见到需要它,或者至少可以证明这种抽象是有价值的。 “The bigger the interface, the weaker the abstraction. 不要用接口进行设计,要…...
计算机视觉+Numpy和OpenCV入门
Day 1:Python基础Numpy和OpenCV入门 Python基础 变量与数据类型、函数与类的定义、列表与字典操作文件读写操作(读写图像和数据文件) 练习任务:写一个Python脚本,读取一个图像并保存灰度图像。 import cv2 img cv2.im…...
计算机网络之网络层(网络层的功能,异构网络互联,路由与转发,SDN基本概念,拥塞控制)
计算机网络之网络层 网络层(Network Layer)是计算机网络体系结构中至关重要的一层,它位于数据链路层(Data Link Layer)和传输层(Transport Layer)之间,主要负责数据包从源主机到目的…...
利用雪花算法+Redis 自增 ID,生成订单号
在我们的项目中,我们需要定义一些全局唯一的 ID,比如订单号,支付单号等等。 这些ID有以下几个基本要求: 1、不能重复 2、不可被预测 3、能适应分库分表 为了生成一个这样一个全局的订单号,自定义了一个分布式 ID …...
第35次CCF计算机软件能力认证 python 参考代码
题目列表1. 密码2. 字符串变换3. 补丁应用4. 通讯延迟5. 木板切割题目列表 第35次CCF计算机软件能力认证 1. 密码 n = int(input()) for _ in range(n):s =...
【探商宝】:大数据与AI赋能,助力中小企业精准拓客引
引言:在数据洪流中,如何精准锁定商机? 在竞争激烈的商业环境中,中小企业如何从海量信息中快速筛选出高价值客户?如何避免无效沟通,精准触达目标企业? 探商宝——一款基于大数据与AI技术的企业信…...
npm 私服使用介绍
一、导读 本文主要介绍 npm 私服的使用,至于 npm 私服搭建的过程,可以看本人之前的文章《Docker 部署 verdaccio 搭建 npm 私服》 二、前置条件 npm私服地址:http://xxx.xxx.xxx.xxx:port/ 三、本地 npm 源切换 使用nrm,可以方…...
【Python 打造高效文件分类工具】
【Python】 打造高效文件分类工具 一、代码整体结构二、关键代码解析(一)初始化部分(二)界面创建部分(三)核心功能部分(四)其他辅助功能部分 三、运行与使用四、示图五、作者有话说 …...
水务+AI应用探索(一)| FastGPT+DeepSeek 本地部署
在当下的科技浪潮中,AI 无疑是最炙手可热的焦点之一,其强大的能力催生出了丰富多样的应用场景,广泛渗透到各个行业领域。对于水务行业而言,AI 的潜力同样不可估量。为了深入探究 AI 在水务领域的实际应用成效,切实掌握…...
基于若依开发的工程项目管理系统开源免费,用于工程项目投标、进度及成本管理的OA 办公开源系统,非常出色!
一、简介 今天给大家推荐一个基于 RuoYi-Flowable-Plus 框架二次开发的开源工程项目管理系统,专为工程项目的投标管理、项目进度控制、成本管理以及 OA 办公需求设计。 该项目结合了 Spring Boot、Mybatis、Vue 和 ElementUI 等技术栈,提供了丰富的功能…...
最新Apache Hudi 1.0.1源码编译详细教程以及常见问题处理
1.最新Apache Hudi 1.0.1源码编译 2.Flink、Spark、Hive集成Hudi 1.0.1 3.flink streaming写入hudi 目录 1. 版本介绍 2. 安装maven 2.1. 下载maven 2.2. 设置环境变量 2.3. 添加Maven镜像 3. 编译hudi 3.1. 下载hudi源码 3.2. 修改hudi源码 3.3. 修改hudi-1.0.1/po…...
设计模式-工厂模式
设计模式 - 工厂模式 工厂模式(Factory Pattern)是一种创建型设计模式,它通过定义一个用于创建对象的接口,让子类决定实例化哪一个类,从而使得一个类的实例化延迟到子类。工厂模式通过将对象创建的逻辑抽象化…...
基于opencv的HOG+角点匹配教程
1. 引言 在计算机视觉任务中,特征匹配是目标识别、图像配准和物体跟踪的重要组成部分。本文介绍如何使用 HOG(Histogram of Oriented Gradients,方向梯度直方图) 和 角点检测(Corner Detection) 进行特征匹…...
《深度学习》——调整学习率和保存使用最优模型
调整学习率 在使用 PyTorch 进行深度学习训练时,调整学习率是一个重要的技巧,合适的学习率调整策略可以帮助模型更好地收敛。 PyTorch 提供了多种调整学习率的方法,下面将详细介绍几种常见的学习率调整策略及实例代码: torch.opt…...
Ubuntu22.04配置cuda/cudnn/pytorch
Ubuntu22.04配置cuda/cudnn/pytorch 安装cuda官网下载.run文件并且安装/etc/profile中配置cuda环境变量 cudnn安装官网找cuda版本对应的cudnn版本下载复制相应文件到系统文件中 安装pytorch官网找cuda对应版本的pytorchpython代码测试pytorch-GPU版本安装情况 安装cuda 官网下…...
通俗理解-L、-rpath和-rpath-link编译链接动态库
一、参考资料 链接选项 rpath 的应用和原理 | BewareMyPower的博客 使用 rpath 和 rpath-link 确保 samba-util 库正确链接-CSDN博客 编译参数-Wl和rpath的理解_-wl,-rpath-CSDN博客 Using LD, the GNU linker - Options Directory Options (Using the GNU Compiler Colle…...
【Golang】GC探秘/写屏障是什么?
之前写了 一篇【Golang】内存管理 ,有了很多的阅读量,那么我就接着分享一下Golang的GC相关的学习。 由于Golang的GC机制一直在持续迭代,本文叙述的主要是Go1.9版本及以后的GC机制,该版本中Golang引入了 混合写屏障大幅度地优化了S…...
Linux(Centos 7.6)命令详解:head
1.命令作用 将每个文件的前10行打印到标准输出(Print the first 10 lines of each FILE to standard output) 2.命令语法 Usage: head [OPTION]... [FILE]... 3.参数详解 OPTION: -c, --bytes[-]K,打印每个文件的前K字节-n, --lines[-],打印前K行而…...
【工具变量】上市公司网络安全治理数据(2007-2023年)
网络安全是国家安全体系的重要组成部分,是确保金融体系稳定运行、维护市场信心的关键。网络安全治理是指通过一系列手段和措施,维护网络安全,保护网络环境的稳定和安全,旨在确保公司网络系统免受未经授权的访问、攻击和破坏&#…...
watermark解释
在 Apache Flink 中,Watermark 是处理事件时间(Event Time)的核心机制,用于解决流处理中因数据乱序或延迟到达而导致的窗口计算不准确问题。理解 Watermark 的关键在于以下几点: 1. 事件时间 vs. 处理时间 事件时间&…...
Transformer 模型介绍(四)——编码器 Encoder 和解码器 Decoder
上篇中讲完了自注意力机制 Self-Attention 和多头注意力机制 Multi-Head Attention,这是 Transformer 核心组成部分之一,在此基础上,进一步展开讲一下编码器-解码器结构(Encoder-Decoder Architecture) Transformer 模…...
Linux安装Minio
1、下载rpm包 2、rpm 安装 rpm -ivh xx.rpm3、通过查看minion状态,查看其配置文件位置 systemctl start minio可以根据情况自定义修改配置文件内容,这里暂时不做修改 4、创建数据文件和日志文件,一般在/usr/local/ 5、编写启动脚本 #!/bi…...
JAVA EE初阶 - 预备知识(三)
一、中间件 中间件是一种处于操作系统和应用程序之间的软件,它能够为分布式应用提供交互、资源共享、数据处理等功能,是现代软件架构中不可或缺的一部分。下面从多个方面为你详细介绍中间件: 定义与作用 定义:中间件是连接两个或…...
百度热力图数据获取,原理,处理及论文应用6
目录 0、数据简介0、示例数据1、百度热力图数据日期如何选择1.1、其他实验数据的时间1.2、看日历1.3、看天气 2、百度热力图几天够研究?部分文章统计3、数据原理3.1.1 ** 这个比较重要,后面还会再次出现。核密度的值怎么理解?**3.1.2 Csv->…...
tcp连接的11种状态及常见问题。
tcp链接整体流程,如下图所示: TCP协议在连接的建立和终止过程中涉及11种状态,这些状态反映了连接的不同阶段。以下是每种状态的详细说明: 1. CLOSED 初始状态,表示没有活动的连接或连接已完全关闭。当应用程序关闭连…...
宝塔面板开始ssl后,使用域名访问不了后台管理
宝塔面板后台开启ssl访问后,用的证书是其他第三方颁发的证书 再使用 域名/xxx 的形式:https://域名:xxx/xxx 访问后台,结果出现如下,不管使用 http 还是 https 的路径访问都进不后台管理 这个时候可以使用 https://ip/xxx 的方式来…...
5.日常英语笔记
sprouted tater 发芽的土豆 fluid 液体,流体 The doctor recommended drinking plenty of fluids 医生建议多喝流质 适应新环境 adapt to the new environment adjust to the new surroundings get used to the new setting accommodate oneself to the new circu…...
利用工业相机及多光谱图像技术助力医疗美容皮肤AI检测方案
随着年轻人对皮肤的管理要求越来越高,“科技护肤”已成为线下医疗美业护肤行业转型升级之趋势。如何利用先进的图像识别技术和AI大数据分析,为医生和消费者提供个性化的皮肤诊断分析和护肤建议,利用工业相机及多光谱成像技术完美实现这一可能…...
qt QOpenGLTexture详解
1. 概述 QOpenGLTexture 是 Qt5 提供的一个类,用于表示和管理 OpenGL 纹理。它封装了 OpenGL 纹理的创建、分配存储、绑定和设置像素数据等操作,简化了 OpenGL 纹理的使用。 2. 重要函数 构造函数: QOpenGLTexture(const QImage &image,…...
【Zookeeper如何实现分布式锁?】
Zookeeper如何实现分布式锁? 一、ZooKeeper分布式锁的实现原理二、ZooKeeper分布式锁的实现流程三、示例代码四、总结一、ZooKeeper分布式锁的实现原理 ZooKeeper是一个开源的分布式协调服务,它提供了一个分布式文件系统的接口,可以用来存储和管理分布式系统的配置信息。 …...
mysql 学习16 视图,存储过程,存储函数,触发器
视图, 存储过程, 存储函数 触发器...
(前端基础)HTML(一)
前提 W3C:World Wide Web Consortium(万维网联盟) Web技术领域最权威和具有影响力的国际中立性技术标准机构 其中标准包括:机构化标准语言(HTML、XML) 表现标准语言(CSS) 行为标准…...
go设置镜像代理
前言 在 Go 开发中,如果直接从官方源(https://proxy.golang.org)下载依赖包速度较慢,可以通过设置 镜像代理 来加速依赖包的下载。以下是增加 Go 镜像代理的详细方法: 一、设置 Go 镜像代理 1. 使用环境变量设置代理…...
matlab数据处理:创建网络数据
% 创建网格数据 [X, Y] meshgrid(x_data, y_data); 如 x_data [1 2 3 4] X 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 XY_data [X(:), Y(:)]; % 将X和Y合并成一个向量 X(:)表示将矩阵排成一列 XY_data 1 …...
在企业内部私有化部署 DeepSeek 或其他 AI 大模型时,基于一般场景的最低硬件配置建议
1. 中央处理器(CPU) 核心数:至少 4 核心,支持多线程任务。频率:至少 2.5 GHz。CPU 型号:Intel Core i5 或更高(如 i7 或 i9),或 AMD Ryzen 5000 系列以上。多核支持&…...
DeepSeek 助力 Vue 开发:打造丝滑的颜色选择器(Color Picker)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
【ArcGIS Pro二次开发】(87):样式_Style的用法
.Stylx类型的文件即为样式库文件,保存了符号样式。 1、根据名字获取当前工程中的style //获取当前工程中的所有style var ProjectStyles Project.Current.GetItems<StyleProjectItem>();//根据名字找出指定的style StyleProjectItem style ProjectStyles.F…...
Jetson Agx Orin平台JP6.0-r36.3版本修复了vi模式下的原始图像损坏(线条伪影)
1.问题描述 这是JP-6.0 GA/ l4t-r36.3.0的一个已知问题 通过vi模式捕获的图像会导致异常线条 参考下面的快照来演示这些线伪影 这个问题只能通过VI模式进行修复,不应该通过LibArgus看到。 此外,这是由于内存问题。 由于upstream已经将属性名称更改为“dma-noncoherent”…...
nlp|微调大语言模型初探索(2),训练自己的聊天机器人
前言 上篇文章记录了具体的微调语言大模型步骤,以及在微调过程中可能遇见的各种报错,美中不足的是只是基于开源数据集的微调,今天来记录一下怎么基于自己的数据集去微调大语言模型,训练自己的智能机器人!!&…...
如何搭建Wi-Fi CVE漏洞测试环境:详细步骤与设备配置
引言 随着Wi-Fi技术的普及,Wi-Fi网络成为了现代通信的重要组成部分。然而,Wi-Fi网络的安全性始终是一个备受关注的话题。通过漏洞扫描和安全测试,网络管理员可以及早发现并修复Wi-Fi设备中存在的安全隐患。本篇文章将详细介绍如何搭建Wi-Fi …...
【三维重建】FeatureGS:特征值优化的几何精度和伪影减少3DGS的重构
文章:https://arxiv.org/pdf/2501.17655 标题:FeatureGS: Eigenvalue-Feature Optimization in 3D Gaussian Splatting for Geometrically Accurate and Artifact-Reduced Reconstruction 文章目录 摘要一、引言二、相关工作:3D特征三、算法3…...
请解释一下Standford Alpaca格式、sharegpt数据格式-------deepseek问答记录
1 Standford Alpaca格式 json格式数据。Stanford Alpaca 格式是一种用于训练和评估自然语言处理(NLP)模型的数据格式,特别是在指令跟随任务中。它由斯坦福大学的研究团队开发,旨在帮助模型理解和执行自然语言指令。以下是该格式的…...
WPS的AI助手进化跟踪(灵犀+插件)
Ver V0.0 250216: 如何给WPS安装插件用以支持其他大模型LLM V0.1 250217: WPS的灵犀AI现在是DeepSeek R1(可能是全参数671B) 前言 WPS也有内置的AI,叫灵犀,之前应是自已的LLM模型,只能说是属于“能用,有好过无”,所…...
本地事务简介
本地事务简介 1 事务基本性质 数据库事务的几个特性:原子性(Automicity)、一致性(Consistency)、隔离性或独立性(islation)和持久性(Durability),简称ACID。 原子性:一系列的操作,其整体不可拆分,要么同时成功&#…...