Python 学习笔记之字符串的切片
字符串的切片是指截取字符串的子串。Python 里截取字符串的子串相当方便。首先,先给一个变量赋值:
1 | >>> word="Hello" |
第一种切片操作是获得字符串的第 n 个字符所组成的字符串:
1 2 | >>> word[1] 'e' |
Python 的“下标”也是从 0 开始的。Python 里似乎没有字符这种概念,只有“只有一个字符的字符串”的概念。所以,我们不能像 C 一样地通过指定“数组”下标来改变字符串,比如以下代码是错误的:
1 2 3 4 | >>> word[1]='o' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment |
Python 字符串中的下标也可以是负数,表示从右向左的顺序。但是请注意,自然语言中的字符串“最后”一个字符,在 Python 里是第 -1 个字符。并且 Python 认为 -0 = 0, 所以有以下结果:
1 2 3 4 | >>> word[-0] 'H' >>> word[-1] 'o' |
Python 也可以切出含有多于一个字符的子串,下标间用冒号隔开:
1 2 | >>> word[1:3] 'el' |
其实我们可以把 Python 字符串的下标看成“字符间的空隙”,下图能够更好地展示 Python 下标的本质:
+---+---+---+---+---+ | H | e | l | l | o | +---+---+---+---+---+ 0 1 2 3 4 5 -5 -4 -3 -2 -1 -0
这样你就不难理解下面语句的输出了:
1 2 3 4 5 6 | >>> word[3:1] '' >>> word[1:-1] 'ell' >>> word[-1:-3] '' |
也就是说,如果对于 Python 的下标,如果左边数值标在左边的空隙,右边数值标在右边的空隙,那么这两个空隙之间的内容将是这个表达式的值。反之,将会是空字符串。
若是在字符串下标处写了冒号,而冒号的某一边,甚至两边的数值都是空的话,就表示取“最极端的值”,也就是尽可能地让子串长:
1 2 3 4 5 6 | >>> word[:] 'Hello' >>> word[1:] 'ello' >>> word[:-2] 'Hel' |
Python 中,用下标表示的字符串子串,是只读的。并且在内存中,应该是一个副本。

这都被你发现了! 这真是最巧妙的切片计算!
另外我想问下你那个+—+—+—+—+—+
| H | e | l | l | o |
+—+—+—+—+—+
0 1 2 3 4 5
-5 -4 -3 -2 -1 -0
式怎么画的..
这个不难,用 HTML 的 pre 标签就可以了。