- 字符串的切片
- 索引 Index
- 切片 Slice
- 切片1:[左下标:右下标]
- 切片2:[:右下标] || [左下标:] || [:]
- 切片3:[左下标:右下标:步长]
- 切片4:负数下标读取
- 字符串的合并与修改
- 字符串的删除
- 获取字符串的长度
- 字符串的乘法
- 字符串地址
想要理解切片与字符串的关系,必须首先理解字符串在内存中的存放方案:
思考:test 字符串变量如何在内存中存储?
test="Tom is a cat!"
| test 字符串 | T | o | m | i | s | a | c | a | t | ! | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 内存下标位置 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
可以发现 test字符串中的每个字符都对应着一个下标。我们可以利用 test[下标] 的方式读取字符串中对应的字符:
这种按照下标读取的方式称为 索引(Index)。一定要注意的是,空格也占内存空间!
切片 Slice
切片有很多种格式,各种不同的格式最后的效果不同:
切片1:[左下标:右下标]python通过切片方式读取下标在 [左下标 : 右下标) 范围内的元素。
| test 字符串 | T | o | m | i | s | a | c | a | t | ! | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 内存下标位置 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
对比列表我们发现切片读取的数据范围是包括左下标而不包含右下标的。test[2,5]所要切片的范围X为取范围2≤X<5。
切片2:[:右下标] || [左下标:] || [:]
切片冒号的两侧可以随意省略,分别代表着不同的意思:
需要注意的是,其仍然符合取左不取右的原则。
取字符原则:
[:] 取整个字符串的字符;
[左下标:] 取从左下标开始(包含左下标)到最后的所有字符;
[:右下标] 取从头开始(包含头)到右下标(不包含右下标)的所有字符。
切片3:[左下标:右下标:步长]
步长,顾名思义就是每一步的长度。默认步长为1。
注意空格也算字符串test中的字符,在内存中占用空间。
切片4:负数下标读取
-1,可以理解为最后一个,以此类推:
字符串的合并与修改
字符串通过加法进行合并,可以通过结合切片进行修改:
字符串的删除
通过 del(变量名) 对变量进行删除。
获取字符串的长度
通过 len(变量名) 获取字符串的长度。
字符串的乘法
字符串变量通过乘法可以重复输出其字符串内容:
字符串地址
当字符串变量的内容为地址时,常常会被系统误以为是转义字符,通过在字符串前加上r,可以使得字符串保持原样输出:
上一篇文章:《【python】数据类型1-变量》
下一篇文章:《【python】数据类型3-数字和运算符》



