一、类型转换
在上一课中,我们了解到整数和浮点数可以转换为字符串,反之亦然。
在Python中,将变量或值的类型从一个转换为另一个称为类型转换。每个变量类型都有自己的构造函数来实现此目的。
- int()-从整数文本、浮点文本(通过删除所有小数)或字符串文本(前提是字符串表示整数)构造整数
- float()-从整数文本、浮点文本或字符串文本构造浮点数(前提是字符串表示浮点数或整数)
- str()-从多种数据类型构造字符串,包括字符串、整数文字和浮点文字
- list()、tuple ()、set ()、 dict()-从文字的迭代中构造一个列表、元组、集合或字典,我们将在后面的章节中讨论。
下面是有关如何将字符串、整数或浮点数转换为字符串的示例。
x = str("s1")
print(x)
y = str(2)
print(y)
z = str(3.0)
print(z)
二、字符串操作
在少儿Python编程基础教程中,我们了解到字符串支持串联和乘法运算。
运算符 | 描述 | 例子 | 结果 |
+ | 串联 | “Hello”+”Python”” | “HelloPython” |
* | 将字符串副本相加 | “123”*3 | “123123123” |
与数字类似,字符串可以运用拓展赋值运算符
运算符 | 例子 | 等价形式 |
+= | s +=”Python” | s = s+”Python” |
*= | s*=3 | s = s*3 |
三、打印多行字符串
在某些情况,我们希望可以打印多行的长字符串,这时,我们可以使用三个引号将字符串赋值给变量:
s = """这是第一行
这是第二行
这是第三行"""
print(s)
执行结果:
这是第一行
这是第二行
这是第三行
四、迭代字符串
字符串和列表一样,都是可迭代变量,支持以下操作。
- 使用len()计算变量的长度
- 使用索引号(用[]括号括起来)访问某位置的元素
- 使用成员运算符“in”或者“not in”检查变量是否存在
下面是一个比较表格,介绍不同的语句
语句 | 字符串 | 列表 |
赋值语句 | s = “abc” | list=[“a”,”b”,”c”] |
前缀串联 | “xyz”+s | [“x”,”y”,”z”]+list |
后缀串联 | s+”def” | list+[“d”,”e”,”f”] |
乘法 | s*3 | list*3 |
求长度 | len(s) | len(list) |
索引 | s[2] | list[2] |
负索引 | s[-1] | list[-1] |
索引错误(超过边界) | s[3] | list[3] |
成员运算符in | “a” in s “ab” in s | “a” in list “ab” in list |
成员运算符not in | “d” not in s | “d” not in list |
for循环 | for c in s: print(c) | for c in list: print(c) |
五、字符串切片
前面的课程,我们学习过如何使用索引访问单个列表或字符串的元素,如果我们想处理字符串或者列表的部分元素,可以使用切片。
切片可用于获取字符串的子部分。
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。
s[start:end] 是从开始(start)索引开始并延伸到但不包括结束(end)索引的元素。
如果我们省略第一个索引(在冒号之前),则切片从字符串的开头开始。
如果省略第二个索引,则切片将延伸到字符串的末尾。
如果第一个索引大于或等于第二个索引,则结果为空字符串,由两个引号表示。
对于非负索引,切片的长度是索引的差值(如果两者都在边界内)。例如,len(s[1:3] )
下面我们以字符串s=”Python”为例,看一下不同切片的效果
切片 | 输出子字符串 | 说明 |
s[1:4] | “yth” | 从索引1开始,一直到索引4,但不包括索引4 |
s[1:] | “ython” | 省略结束索引,默认切片到字符串结尾 |
s[:] | “Python” | 得到字符串副本 |
s[1:100] | “ython” | 超过字符串长度的索引将被截断为字符串长度 |
s[100:] | “” | 开始索引超过字符串长度,之后没有任何字符,所以是空字符串 |
s[:-3] | “Pyt” | 负索引,不包括索引-3及之后的字符 |
s[-3:] | “hon” | 从-3索引开始,一直延伸到字符串末尾 |
注意:
s[:i]+s[i:]=s
s = "Python"
s1=s[:3]
s2=s[3:]
s3=s1+s2
print(s3)
执行结果:
Python
大家可以注意到切片的语法和range(start,stop,step)语法非常类似。确实,切片也支持步长step参数,语法:s[start:stop:step],我们还以s=”Python”为例
切片 | 输出子字符串 | 说明 |
s[1::] | “ython” | 省略步长,默认为1 |
s[1::2] | “yhn” | 步长为2,切片取的字符索引是1,3,5,每一步索引增加2 |
s[::-1] | “nohtyP” | 负步长将默认切片方向从左到右更改为从右到左。step=-1实质上是反转整个字符串,返回一个子字符串,其中字符从最右边开始到最坐标,索引每一步减少1. |
s[::-2] | “nhy” | 与上面的例子相同,但是每一步索引减少2 |