本文参考借鉴了《Python学习手册(第四版)》,Mark Lutz著;李军 刘红伟等译一书。
字符串索引和分片
字符串是字符的有序集合,所以我们能够通过其位置获得他们的元素。
>>> s = "Hello"
>>> s[0],s[-1]
('H', 'o')
>>> s[0:2],s[1:],s[0:-1]
('He', 'ello', 'Hell')
索引(s[i])获取特定便宜的元素:
——第一个元素的偏移为0
——负偏移索引意味着从最后或右边反向进行计数
——s[0]获取第一个元素
——s[-1]获取倒数第一个元素(等同于s[len(s)-2])
分片(s[i:j])提取对应的部分作为一个序列:
——上边界并不包含在内(i为下边界,j为上边界)
——在未给出的情况下,分片的边界默认为0和序列的长度
——s[1:3]获取了从偏移为1的元素,直到但不包括偏移为3的元素
——s[1:]获取了从偏移为1知道末尾(偏移为序列长度)
——s[:3]获取了从偏移为0直到但不包括偏移为3之间的元素
——s[:-1]获取了从偏移为0直到但是不包括最后一个元素之间的元素
——s[:]获取了从偏移0到末尾之间的元素,这就有效地实现顶层s拷贝
在python2.3中,分片表达式增加了一个可选的第三个索引,用作步进。完整分片格式为s[i:j:K],这表示“索引s对象中的元素,从偏移为i直到j,每k元素索引一次,k值默认为1。
>>> s="0123456789"
>>> s[0:10:2] #代表从偏移为0到10之间,每2个元素索引一次(等同于[::2])
'02468'
>>> s[::-1]
'9876543210'
s[::-1],前两个参数默认为0和序列的长度,步进-1表示分片将会从右至左进行,每1个元素索引一次,实际效果就是将序列反转。
通过一个负数步进,两个边界到的实际意义进行了反转。
>>> s[9:1:-1]
'9876543'
以上内容如有错误,敬请批评指正!谢谢!