【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 字符串的查找和替换

  • innot 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},自动去重

集合是非常适合用于去重和进行集合运算的工具,可以高效地进行元素的查找、插入、删除等操作。

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

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

相关文章

Spring Boot (maven)分页3.0版本 通用版

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…

OpenAI 放王炸,将发布整合多项技术的 GPT-5,并免费无限使用,该模型有哪些技术亮点

对于 ChatGPT 的免费用户&#xff0c;将可以无限制地访问 GPT-5&#xff0c;但仅限于标准的智能级别。该级别会设定滥用限制&#xff0c;以防止不当使用(意思就是你得付费嘛)。 OpenAI CEO Sam Altman 今天在 X 上透露了 GPT-4.5 和 GPT-5 的最新发展计划。 OpenAI 将发布代…

git pull 与 git pull --rebase的区别与使用

git pull 与 git pull --rebase的区别与使用 1. 优化commit很乱的记录1.1 解决问题例子 1.2 idea 中更新代码 1. 优化commit很乱的记录 课程&#xff1a;优化Commit记录 之前遇到过这个问题&#xff0c;已知没当回事&#xff0c;现在想做出改变&#xff0c;正好B站有个视频&am…

Web3 开发者周刊 36 | 构建自主未来:Agent、可扩展性与赏金

欢迎来到 Web3 开发者周刊 36&#xff0c;这里汇聚了赋能您的 Web3 构建之旅的各种资源。本周我们将剖析基于Agent的系统&#xff0c;讨论来自 Vitalik 关于以太坊 L1 和 L2 的最新思考&#xff0c;并提供最新高价值Bounty消息。 开始Build吧&#xff01; ✅ One Trillion Age…

[小M全新力作-修稿]PFC_LLC电源设计全攻略:从原理学习到SIMULINK仿真到EDA板实战,再到实物电源调试

未完结 可私信获取手稿以详细理解本文 LLC __2025.1.13 MOS ZVS ZCS 重锁粥支&#xff0c;MOS管由于设计工艺&#xff0c;总会产生一些寄生元件如&#xff1a;寄生电容&#xff08;pf级&#xff09;、寄生电阻、寄生二极管等 由于这些MOS参数&#xff0c;会导致MOS的导通…

VNC远程控制Mac

前言 macOS系统自带有VNC远程桌面&#xff0c;我们可以在控制端上安装配置VNC客户端&#xff0c;以此来实现远程控制macOS。但通常需要在不同网络下进行远程控制&#xff0c;为此&#xff0c;我们可以在macOS被控端上使用cpolar做内网穿透&#xff0c;映射VNC默认端口5…

关闭浏览器安全dns解决访问速度慢的问题

谷歌浏览器加载速度突然变慢了&#xff1f;检查安全DNS功能(DoH)是否被默认开启。 谷歌浏览器在去年已经推出安全DNS功能(即DoH) , 启用此功能后可以通过加密的DNS增强网络连接安全性。例如查询请求被加密后网络运营商将无法嗅探用户访问的地址&#xff0c;因此对于增强用户的…

ES分词技术

Elasticsearch&#xff08;ES&#xff09;的搜索功能依赖于分词技术&#xff0c;分词是将文本拆分为单个词或词项的过程&#xff0c;直接影响搜索的准确性和效率。以下是ES中分词技术的详细介绍&#xff1a; 1. 分词器&#xff08;Analyzer&#xff09; 分词器是分词的核心组…

SpringBoot3 快速启动框架

文章目录 1 SpringBoot3 介绍 1.1 SpringBoot3 简介1.2 快速入门1.3 入门总结 2 SpringBoot3 配置文件 2.1 统一配置管理概述2.2 属性配置文件使用2.3 YAML配置文件使用2.4 批量配置文件注入2.5 多环境配置和使用 3 SpringBoot 整合 springMVC 3.1 实现过程3.2 web相关配置3.3…

小小小病毒(3)(~_~|)

一分耕耘一分收获 声明&#xff1a; 仅供损害电脑&#xff0c;不得用于非法。损坏电脑&#xff0c;作者一律不负责。此作为作者原创&#xff0c;转载请经过同意。 欢迎来到小小小病毒&#xff08;3&#xff09; 感谢大家的支持 还是那句话&#xff1a;上代码&#xff01; …

Map 和 Set

目录 一、搜索 概念&#xff1a; 模型&#xff1a; 二、Map ​编辑 1.Map 实例化&#xff1a; 2. Map的常见方法&#xff1a; 3.Map的常见方法演示&#xff1a; 1. put(K key, V value)&#xff1a;添加键值对 3. containsKey(Object key)&#xff1a;检查键是否存在 4.…

pytest测试专题 - 2.1 一种推荐的测试目录结构

<< 返回目录 1 pytest测试专题 - 2.1 一种推荐的测试目录结构 2 pytest 项目目录结构及文件功能 以下是典型 pytest 项目中常见的文件和目录结构及其功能的概述&#xff1a; 2.1 文件/目录结构 文件/目录功能描述test_ 文件* 主测试文件&#xff0c;命名通常以 test_…

常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构

文章目录 引言常见的架构图I 业务架构图-案例模块功能说明1. 用户界面层 (UI)2. 应用服务层3. 数据管理层4. 基础设施层业务流程图示例技术实现II 功能架构图 -案例功能模块说明1. 船舶监控模块2. 报警管理模块3. 应急响应模块4. 通信管理模块5. 数据分析模块数据管理层基础设施…

爬虫实战:利用代理ip爬取推特网站数据

引言 亮数据-网络IP代理及全网数据一站式服务商屡获殊荣的代理网络、强大的数据挖掘工具和现成可用的数据集。亮数据&#xff1a;网络数据平台领航者https://www.bright.cn/?promoRESIYEAR50/?utm_sourcebrand&utm_campaignbrnd-mkt_cn_csdn_yingjie202502 在跨境电商、社…

蓝桥杯篇---温度传感器 DS18B20

文章目录 前言DS18B201. DS18B20 引脚说明2. 单总线通信协议3. DS18B20 操作流程初始化写操作读操作 4. 示例代码5. 代码说明6. 注意事项总结 前言 本文简单介绍了IAP15F2K61S2中温度传感器模块DS18B20的使用。 DS18B20 DS18B20 是一款数字温度传感器&#xff0c;采用单总线&…

YOLOv5-Seg 深度解析:与 YOLOv5 检测模型的区别

YOLOv5-Seg 深度解析&#xff1a;与 YOLOv5 检测模型的区别 1. 概述 YOLOv5 是一个强大的目标检测框架&#xff0c;而 YOLOv5-Seg 是其扩展版本&#xff0c;增加了实例分割功能。 YOLOv5&#xff08;目标检测&#xff09; vs YOLOv5-Seg&#xff08;实例分割&#xff09; 版…

传感器篇(一)——深度相机

目录 一 概要 二 原理 三 对比 四 产品 五 结论 一 概要 深度相机是一种能够获取物体深度信息的设备&#xff0c;相较于普通相机只能记录物体的二维图像信息&#xff0c;深度相机可以感知物体与相机之间的距离&#xff0c;从而提供三维空间信息。在你正在阅读的报告中提到…

docker部署单机版doris,完整无坑

文章目录 一、部署1、修改内核参数2、下载Docker 开发环境镜像3、下载安装包4、启动镜像5、配置fe6、配置be7、远程连接 二、运维命令参考资料 一、部署 1、修改内核参数 在启动doris的be时&#xff0c;需要将 Linux 操作系统的内核参数设置为2000000&#xff0c;这里是Doris…

二叉树(C语言版)

文章目录 二叉树完全二叉树和满二叉树二叉搜索树基本操作实现代码运行结果 分析红黑树2-3-4树(理论模型)红黑树(实际实现) 二叉树 树是一种层次结构&#xff0c;它在现实生活中是广泛存在的&#xff0c;比如&#xff1a;族谱(family tree)&#xff0c;组织机构&#xff0c;目录…

HCIA项目实践---ACL访问控制列表相关知识和配置过程

十 ACL访问控制列表 1 策略的概念 在网络连通之后&#xff0c; 把所有为了追求控制而实现的技术都叫策略 2 访问控制 在路由器流量流入或者流出的接口上&#xff0c;匹配流量&#xff0c;执行相应的动作。&#xff08;流量流入或者流出的接口并不是一个固定的概念而是一个相对的…