python数据结构(一):字符串

news2024/10/6 8:26:31

一、字符串的格式化输出

1.1、格式化运算符
print("我跑完了第" + str(lap + 1) + "圈")

上面这段输出的代码使用了两个加号做了字符串拼接,并且将整形转换成了字符串。也可以使用一种更好的办法,格式化输出来打印这句话。

print("我跑完了第%d圈" % 1)

这里的百分号就是格式化符号,跟模运算符一样,但在不同的地方用法不一样。%d是一种占位,表示要显示在这里是一个整数

常用的占位符有以下几种

占位符描述
%d整数占位符
%f浮点数占位符
%.f指定精度的浮点数占位符
%s字符串占位符
%%输出百分号%

如果给%d 传入一个浮点数,那它会自动将它转换成整数

print("%d" % 3.14) # 输出3
print("%d" % 3.99) # 输出3

转换成整数的规则和类型转换的规则一 样,不会四舍五入。

%f的用法有两种,一种就是直接使用,比如

print("%f" % 3.14) # 输出3.140000,后面的0是自动补齐的
## 如果我们只想要输出小数点后两位
print("%.2f" % 3.14)
print("%.2f" % 3.1415926)

即使浮点数后面的小数部 分超出了2位,也只会输出两位。如果不足两位,或者是个整数,会自动补零到两位

print("%.2f" % 3) # 3.00
print("%.2f" % 3.1) # 3.10

%s 是胜任最广泛的占位符,它可以对应任何类型的变量

print("%s" % 100) # 输出100
print("%s" % 3.14) # 输出3.14
print("%s" % "python") # 输出python

在同一个字符串可以同时使用多个占位符:

report = "%d年%s公司营收增长了百分之%.2f" % (2019, "腾讯", 20.28)
print(report)

在这里插入图片描述

1.2 format函数

除了%运算符外,Python还为我们提供了字符串的format函数提供丰富的格式化

如说,在输出一个 较长的数字时,根据国际惯例,每三位用逗号分隔

'{:,}'.format(1234567890)
# 1,234,567,890

format函数也可以像%那样来格式化多个参数

report = "{0}年{1}公司营收增长了{2}%".format(2019, "腾讯", 20.28)
print(report)

在这里插入图片描述

{0}表示第一个参数,{1}{2}表示第二、第三个参数,以此类推。这样做的好处是,如果有参数在字符串出现多次,可以不用重复的传入

二、字符串的下标和切片

字符串其实也是一种序列,可以理解为一串整齐的按顺序排着队的字符,组成了字符串,那每个字符在队伍中都有自己的位置,这个位置就是下标,又叫作索引。

比如,CHINA"这个字符串,从左往右每一个字符对应了一个下标(索引),需要特别注意的是,在 计算机编程中,所有的下标都是从0开始的,当我们要访问一个字符串的第1个字符时,使用的下标应该是0。

在这里插入图片描述

使用中括号加数字的方式,表示要访问的是具体哪个位置上的字符

"CHINA"[1] # 第2个字符"H"
"CHINA"[4] # 第5个字符"A"

第5个字符"A"是这个字符串的最后一个,我们也可以这样来访问

"CHINA"[-1] # 最后一个字符"A"

使用负数下标可以从右往左访问,这种写法是Python特有的,非常的快捷,对于任意长度的字符串,我们都可以使用-1来获取它的最后一个字符,注意使用负数下标是是从-1开始的,因为-0也是0,产生重复了。

在这里插入图片描述

切片操作也是Python的一大特色,极大简化了序列访问和操作

在这里插入图片描述
在这里插入图片描述

那如果想得到切片出整个字符串,可以有多种写法

"CHINA"[0:6] # CHINA
"CHINA"[0:] # CHINA
"CHINA"[:] # CHINA
## 事实上,前面的0也可以不写,冒号左边为空表示从第一个字符开始截取。

如果想要隔一个字符取一个,可以这样写

# 每隔两个字符截取一个
"CHINA"[::2] # CIA

第二个冒号表示截取步长,这里的2表示每两个字符取一个,如果不传,默认就是每一个都取。步长也可以为负数,如果传递了一个负数,则表示是从右往左进行截取

三、字符串函数

3.1 去除空白字符函数

所谓的空白字符,其实就是空格、换行(\n)、制表符(\t)等等一些看不见的特殊字符

print("A\tB\tC\nD\tE\tF")

在这里插入图片描述

很多时候做判断的时候我们的字符带有空白字符那是会判断失败的

password = "123"
input_password = " 123"
print(password == input_password)

print输出为False,由于在1前面有一个空格,导致了密码校验失败,所以必须对用户的输入先进行处理

password = "123"
input_password = " 123"
print(password == input_password.strip())

在这里插入图片描述

我们在input_password后面加了一个函数strip(),现在输出变成了True。strip函数的作用就是去除字符 串首尾的所有空白字符

另外还有 lstrip 和 rstrip 函数,分别去除字符串左边和右边的空白字符

" abc ".lstrip() # 结果'abc '
" abc ".rstrip() # 结果' abc'
3.2 大小写操作
# 将所有字符变成大写
"china".upper() # CHINA
# 将字符串的首字母变成大写
"china".capitalize() # China
# 将所有字符变成小写
"CHINA".lower() # china
# 将每个单词的首字母变成大写
"i have a dream".title() # I Have A Dream
1.3.3 字符串判断

判断字符串是否以指定的字符串开头或者结尾

函数说明
startswith是否以指定的字符串开头
endswith是否以指定的字符串结尾
isdigit是否是一串数字
islower是否全是小写字母
isupper是否全是大写字母
3.4 查找与替换

查找与替换 我们可以使用find()函数

password = '123'
input_pwd = '456123789'
password in input_pwd # True

上面代码我们使用in可以判断出input_pwd中是否有password,但如果想要知道password在input_pwd中的确切位置,就需要使用find函数

input_pwd.find(password) # 结果是3

结果是3。在input_pwd中寻找password,找到了,且它的出现的位置是3,也就是第4个字符。如果没 有找到则会返回-1

除了find函数,index函数也有相同的功能,唯一的区别是 ,index函数如果没有找到相应的字符串就会报错

input_pwd.index(password) # 结果是3
# 这行代码将会在运行时报错
input_pwd.index("notexists")

count函数能够查找出指定的字符串一共出现了几次,如果没有出现,则返回0

"abba".count('a') # 2
'abba'.count('c') # 0

replace函数提供了替换字符串中某些部分的功能

"abba".replace('a', 'b') # 结果是'bbbb'
'apple banana'.replace('apple', 'orange')
# 结果是'orange banana'
3.5 字符串长度

字符串本身没有测量长度的函数,需要借助一个Python内置函数len。它不光可以测量字符串的长度,也可以测量其他所有有长度的对象

len("China") # 5
len("") # 0
len("a") # 1

r = range(10)
len(r) # 10
3.5 字符串长度

字符串本身没有测量长度的函数,需要借助一个Python内置函数len。它不光可以测量字符串的长度,也可以测量其他所有有长度的对象

len("China") # 5
len("") # 0
len("a") # 1

r = range(10)
len(r) # 10

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

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

相关文章

xilinx srio ip学习笔记之再识srio

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 xilinx srio ip学习笔记之再识srio前言SRIO的理解IP核的理解前言 这段时间,随着对SRIO的学习,又有了更深的一点认识,不像一开始这么慌张了…

年终汇报工作,如何用项目管理工具展现成果

据报道,2022年11月20日的一次京东内部会议上,刘强东痛批京东中高层管理人员,表示部分高管醉心于 PPT 和奇妙词汇,或吹得天花乱坠但是执行一塌糊涂。 不可否认,刘强东提到的现象,的确是当今众多互联网大厂和…

基于frp实现外网访问个人本地服务器

适用对象想要通过frp实现内网服务被外网访问的人。关键词描述内网:内网指的是局域网,几台或者几十台电脑之间互访,也叫私网。外网:指的是我们上的Internet网络,也叫公网。需要具备的知识基础和条件1:外网服…

Java异常分类常见使用场景

今天在自己实现RxJava框架时,发现一些参数异常、流关闭异常等,Rxjava框架是会抛出相应的异常的,所以自己编写实现这块源码的时候,渐渐的也需要使用到这些知识,这里对这块做一下回顾总结。 使用 我们代码编写实现中&am…

开年喜讯!知道创宇一连斩获2022年度“IT168技术卓越奖”三项大奖

近日,业界知名IT垂直门户媒体IT168发布“2022年度IT168技术卓越奖”获奖名单,知道创宇凭借强大的技术优势与出色的产品能力脱颖而出,一举斩获网络安全领域三项大奖: 知道创宇创始人、CEO赵伟获评“数字化转型领军人物” ScanV-互…

【C++】优先级队列priority_queue/仿函数(函数对象)

这里写目录标题一.优先级队列1.优先级队列的介绍2.priority_queue的定义与使用二.仿函数/函数对象三.优先级队列的模拟实现一.优先级队列 1.优先级队列的介绍 1)注意优先级队列和队列不是一个东西,队列是容器,优先级队列是一种容器适配器&am…

服务监控之promethues+grafana,直接送你上大师,这还不上热门吗

最近的项目需要上监控,虽然之前也是使用这个方案,但是作为使用者一直没有太关注细节,也没有真正的去部署过,刚好凑着这次机会,彻底掌握下这套监控系统 1、监控系统架构 监控的架构这个图几乎每个文章都有&#xff0c…

学习JS,实现自动打字机动效

前几天遇到一个需求,产品告诉我说,希望这些字可以像自动打字那样,一个一个的出来,于是在完成需求的同时,顺便把这个方法记录出来,看大家是否也需要。 目录 1、实现思路 2、html布局和css样式 3、预定义…

【数据库】什么是关系型数据库和非关系型数据库

数据库分类关系型数据库非关系型数据库键值对存储数据库列存储数据库搜索引擎数据库面向文档数据库图形数据库数据库优缺点应用程序都离不开数据库,那不同的数据结构,就会存放在不同的数据数据库中,所以数据库按数据结构分为关系型数据库和非…

spring事务失效的一些场景

1、 Transactional 只能作用在public修饰的方法上 spring事务的实现AbstractFallbackTransactionAttributeSource类的computeTransactionAttribute方法中有个判断,如果目标方法不是public,则TransactionAttribute返回null,即不支持事务。 2…

ORB-SLAM3算法和代码学习——跟踪参考关键帧TrackReferenceKeyFrame

0总述 无论是跟踪恒速运动模型还是跟踪参考关键帧,本质上都是基于帧间匹配跟踪。 跟踪恒速模型是当前帧和上一帧之间的匹配,使用基于恒速模型计算得到的位姿作为优化的初始位姿,基于网格和搜索半径寻找匹配关系。 跟踪参考关键帧是当前帧和…

SpringCloudAlibabaSentinel实现网关动态限流

目录 1.SpringCloudAlibabaSentinel实现网关动态限流 1.概念和来历 2.概览及控制台搭建 3.控制台有哪些能力 4.功能及设计理念 5.限流的几种方法 2.SpringCloud Alibaba Sentinel 的降级功能 1.yml中添加配置 2.编写配置类 3.编写兜底工具类 3.Sentinel还对Feigin实…

代码整洁之道,好的代码就是为了更美好的生活

概述 美国童子军有一条简单的军规:让营地比你来时更干净。当梳理代码时,坚守此军规:每次 review 代码,让代码比你发现它时更整洁。 一位大神说过:“衡量代码质量的唯一有效标准:WTF/min”,并配…

14.Isaac教程--Jetbot应用示例

Jetbot应用示例 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 本节介绍如何将 Isaac SDK 与 NVIDIA 新的高性能模拟平台 Omniverse 集成,以让 Jetbot 在模拟中跟随球。 本节作为使用三个 Jetbot 应用程序进入 Omniverse 和 Isaac …

国产的蓝光存储设备能算信创产品吗?

这个问题是客户前几天问我的,笔者只能实事求是的告诉他:目前还不能算!首先蓝光存储产品暂时未被列入信创名录,其次蓝光存储中最核心的读写设备(蓝光光驱)的技术专利和生产工艺基本被日本企业(索…

LeetCode 101. 对称二叉树

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 101. 对称二叉树,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 LeetCode 1…

高端运动耳机哪个品牌最好、公认最好的跑步耳机品牌排名

在健身、运动的时候,过程往往是很枯燥的,这时候,如果能有动感的音乐在旁,调动我们的积极性,就再好不过了,所以很多人在运动的时候都会选择佩戴一款运动蓝牙耳机。不过适合运动的蓝牙耳机少之又少&#xff0…

七、MySQL 多表查询详解(附练习题及答案----超详细)

文章目录一、笛卡尔积(或交叉连接)的理解二、多表查询分类讲解2.1 分类1:等值连接 vs 非等值连接2.2 分类2:自连接 vs 非自连接2.3 分类3:内连接 vs 外连接2.4 SQL99语法实现多表查询2.4.1 内连接2.4.2 左连接2.4.3 右…

System Description 步骤

纲要: 在有了Composition以后,下一步就是把它分配到ECU里面。 1. Create System Description Import DBC file, select ECUs and CAN Frames under the DBC. Then it will create "SystemDescription.arxml" file. [1] 2. Check the content…

地图下载器代码结构设计及功能实现

jcef包引入表结构设计后台关键代码结构前端关键代码结构功能展示启动页底图切换绘制选择下载区域行政区划切换选择下载区域下载关键代码import { InnerMqClient } from ../../rx/inner-mq.service;import { SubmitService } from ../../service/submit.service;import { MapBas…