内容正文:
选择性必修1《数据与数据结构》
制作者:邹修鸿
第三章 字符串、队列和栈
3.1 字符串的概念、特性及基本操作
二十一世纪外国语学校
1
情境导入
垃圾邮件图片
信息诈骗图片
2
知识讲解
1.字符串的概念
字符串是由零个或多个字符组成的有限序列。
字符来自某些特定字符集:
ASCII (美国信息交换标准码)字符集(大小写英文字母、数字、标点符号、控制字符等共128个字符)
一个字符串中可以包含多种字符集字符。字符串长度:包含的字符个数。
字符串一般用双引号或单引号加以界定。
s=“Hello World”
print(“字符串的长度为:”,len(s))
>>>字符串的长度为:11 #包含11个字符(不包括双引号),其中空格也是一个字符
3
知识讲解
1.字符串的概念
空串:
空格串:
子串:
不包含任何字符,长度为0
由空格组成的字符串,长度为空格的长度
任意个连续的字符序列
4
知识讲解-2.字符串的特性
(1)有限序列性字符串是一种线性表结构,数据元素个数有限(0个或多个字符)
除第一个和最后一个元素外,其他元素都有一个唯一的前驱和后继,可以用元素在字符串中的相对位置作为标号来访问每个元素。
在用Python实现的字符串中,有正索引标号和负索引标号,如表3.1.1所示。
【注意】
访问索引运算符:“[ ]”
正索引:第一个位置为0
负索引:从末端开始编号,第一个位置为“-1”
5
知识讲解-2.字符串的特性
(2)字符串的可比性
【比较规则】(若字符全来自ASCII字符集)
按ASCII码值进行比较,从左至右,依次比较两个字符串中对应位置上字符的ASCII码值。
“word”>“work”为True。 (ord(“k”)>ord(“d”))
“9”>“10”为True。 (ord(“9”)>ord(“1”))
对于含有非ASCII码字符集的字符串,需要根椐编码的方式讲行比较。
6
*讨论方向:存储内容、存储方式、内容大小比较等
问题与讨论
数组和字符串有那些相同点和不同点?
比较方向
数据结构 存储内容 存储方式 内容大小比较 访问元素 存储空间
不同 不同 不同 相同
数组 数据元素类型相同 一维/二维 索引项对应位置 索引(正负)-数组名 固定不变
字符串 来自特定字符集
(ASCII、GB2312等) 享元模式
(共同享有同一个对象) 从左至右,对应位置
(一般标准为ASCII码) 索引(正负) 有限序列
7
字符串的基本操作
求子串
字符串的连接
常用函数和方法
子串判断
知识讲解
8
1.子串判断:in函数作用
格式:“字符串a in 字符串S”
方法1:
方法2(无括号):
逐个枚举:in函数作用
in函数作用2:逐个枚举
2.求子串(切片)
格式:字符串[位置i : 位置j]
s[i:j]表示取字符串S的索引下标i至j-1范围内的子串
3.字符串的连接
格式:“字符串S1+字符串S2”
字符串常用函数和方法
函数和方法 功能 实例
len(s) 字符串长度 x="Hello!"
print(len(x))
>>>6
x.find(y) 在x中找y出现的首字母下标
(找不到,则输出-1) x="Hello!"
y="llo"
print(x.find(y))
>>>2
x.split(str=“ ”,num=string,count(str)) 以str分隔符切片x(若指定num,则分割成num个)。切片结果存储在列表中。 x="I like Python"
list=x.split()
print(list)
>>>[‘I’, ‘like’, ‘Python’] #列表形式
x.replace(old,new[,max]) 将old替换成new,替换不能超过x次 x="is is is is"
print(x.replace("is","was"))
print(x.replace("is","was",3))
>>>was was was was
was was was is
x.upper() 小写字母 大写字母 x.upper( )
xlower() 大写字母 小写字母 x.lower( )
13
返回
自主学习: 回文字串
例1 回文串
上联:客上天然居,居然天上客
下联:人过大佛寺,寺佛大过人
僧游云隐寺,寺隐云游僧
邻居爱我我爱居邻,鱼傍水活水傍鱼。
回文特点:字符串左右对称
判断方法:找到中间位置;取出左边,存入left;取出右边right;
若left==rig