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

Python之字符串操作(连接符、重复符、比较、in)

字符串操作

  • 连接(+)和重复(*)
  • 比较运算符
    • 单字符字符串的比较
    • 多字符字符串的比较
  • in 运算符
  • 字符串集合是不可变的。
  • 自测练习

连接(+)和重复(*)

+:连接符,能够将两个字符串连接在一起,得到一个新的字符串对象。
*:重复符,重复符需要一个字符串和一个整数,得到整数个字符串相连接的新字符串。
在这里插入图片描述

连接字符时,根据+前后的字符串顺序去连接。
复制字符时,数字放前面也没关系,例如:3*myString
连接字符不能连接字符串和数字,重复字符时不能对两个字符串进行操作

对比加法运算符和乘法运算符。
Python会根据运算符前后的对象是什么类型来决定+或 * 此时代表什么运算符。
例如,当+前后都是数字时,Python会对两个数字进行相加操作。当识别到+前后都是字符串时,Python会对两个字符串进行连接操作。
同理,当 * 前后都是数字时,会进行乘法运算。当 * 前后一个是字符串一个是数字时,会进行字符串的重复运算。
在Python中可以使用type()函数获取当前对象的类型。再利用int() float() str()对当前对象进行类型转换,确保运算正确。

比较运算符

单字符字符串的比较

比较两个单字符字符串,可以使用“”运算符。比较时区分大小写。
如:a
a为True,但a==A为Flase

比较单字符字符串大小时,比较的是字符的ASCII值大小。
下面是常见字符的ASCII值。
请添加图片描述

可以使用函数ord()得到字符的ASCII值,也可以使用chr()获取ASCII值对应的字符。
ord(A)=65 ord(a)=97,所以‘a’>‘A’
技巧:对于26个字母来说,都是大写字母,排序前的ASCII的就小。都是小写字母,排序前的ASCII的也小。但一个大写字母和一个小写字母,大写一定比小写小。(其实记住A和a的ASCII值就好了)

多字符字符串的比较

思路:并行检查两个字符串中位于同一位置的字符,然后向前推进,直到找到两个不同的字符为止。
(1)从两个字符串索引值为0的位置开始(最左边第一个字符)
(2)比较位于当前的两个单字符(单字符比较方法如上)

  • 相等,两个字符串的索引值加1,回到(2)
  • 不相等,返回这两个字符的比较结果,作为字符串比较结果
    (3)如果两个字符串到第一个字符串结束时都相等,那么较长的字符串更大。例如"ab"<“abc”

例如:“abc”<"cde"为True
“abc”<"abd"为True
" "<"a"为True(空字符串可以视为长度为0,比任何字符串都小)

in 运算符

in在。。。里面
在这里用于检查集合的成员。一个元素在不在这个集合里。
使用方法:被检查的元素 in 集合名
如果在,结果是True,否则为Flase

w="hello"
"a" in w    #返回Flase
"e"  in  w   #返回True
"ll" in w   #返回True
"eo" in w  #返回Flase

注意:如果被检测元素是多字符字符串,必须集合中有按照这种顺序排序的才算True

字符串集合是不可变的。

前面说字符串是可以索引的,例如a[0]是字符串的第一个元素。
也说了=是赋值语句,能将右边的内容复制给左边。
但两者结合在一起就会出错。
在这里插入图片描述

不能通过a[0]="a"这种形式去修改字符串的内容。
已经创建的字符串时不可修改的。
如果想要修改一个变量相关联的字符串内容,可以用未被修改的切片和修改内容连接得到一个新的字符串内容来直接取代原来的内容。如把“Hello”修改成“Jello”

myString="Hello"
myString="J"+myString[1:]     #这里[1:]可以得到第2个元素一直到最后的切片,“ello”
#用“J”+“ello”得到“Jello”,再赋值给myString

自测练习

在这里插入图片描述
【参考答案】
分析代码:
第4行的布尔表达式是标号indxInt小于字符串长度-1时
将标号索引值和下一个值的字符进行比较,前面大于后面就把当前字符放到resultStr中,否则,重复当前的resultStr两次。
(a)"abc"前面的都大于后面的,所以执行的都是重复符号的内容,resultStr一开始为空,最后也是空。结果:“”
(b)c>b,resultStr=“c” b>a resultStr=“cb” 结果为“cb”
(c)c>a,resultStr=“c” a<b resultStr=“cc” 结果为“cc”
(d)indxInt一直等于0,while循环永不停止
(e)在最后一次判断时,my(indxInt+1)的索引值会超出范围。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 探索SQL的神秘力量:模糊匹配的艺术
  • 8月线代强化规划,李永乐重点总结+带刷计划!
  • Linux驱动入门实验班——LED驱动(附百问网视频链接)
  • pnpm install 后还是没有生成 pnpm-lock.yaml 文件
  • CentOS系统下安装NVIDIA显卡驱动
  • 云原生日志Loki
  • MySQL 数据表管理
  • 41-设计规则:线宽规则
  • [upload]-做题笔记
  • 疫情隔离酒店管理系统的开发--论文pf
  • Postman内置动态参数和自定义动态参数
  • 钧瓷联合体——7月中国最具影响力的50位钧瓷匠人
  • flink车联网项目前篇:业务实现1(第67天)
  • AI编程系列一1小时完成链家房价爬虫程序
  • 【MySQL】数据库约束
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Linux各目录及每个目录的详细介绍
  • ReactNativeweexDeviceOne对比
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 大数据与云计算学习:数据分析(二)
  • 构建工具 - 收藏集 - 掘金
  • 聊聊hikari连接池的leakDetectionThreshold
  • 免费小说阅读小程序
  • 如何选择开源的机器学习框架?
  • 一天一个设计模式之JS实现——适配器模式
  • 《天龙八部3D》Unity技术方案揭秘
  • 阿里云移动端播放器高级功能介绍
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • (11)MSP430F5529 定时器B
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (补充)IDEA项目结构
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (转) ns2/nam与nam实现相关的文件
  • (转)http协议
  • (转载)OpenStack Hacker养成指南
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET 8 跨平台高性能边缘采集网关
  • .net dataexcel 脚本公式 函数源码
  • .NET Framework杂记