如果要從字符串中取出多個字符,我們可以對字符串進行切片,運算符是[i:j:k],其中i是開始索引,索引對應的字符可以取到;j是結束索引,索引對應的字符不能取到;k是步長,默認值為1,表示從前向后獲取相鄰字符的連續切片,所以:k部分可以省略。假設字符串的長度為N,當k > 0時表示正向切片(從前向后獲取字符),如果沒有給出i和j的值,則i的默認值是0,j的默認值是N;當k < 0時表示負向切片(從后向前獲取字符),如果沒有給出i和j的值,則i的默認值是-1,j的默認值是-N - 1。如果不理解,直接看下面的例子,記住第一個字符的索引是0或-N,最后一個字符的索引是N-1或-1就行了。
s = 'abc123456'
# i=2, j=5, k=1的正向切片操作
print(s[2:5]) # c12
# i=-7, j=-4, k=1的正向切片操作
print(s[-7:-4]) # c12
# i=2, j=9, k=1的正向切片操作
print(s[2:]) # c123456
# i=-7, j=9, k=1的正向切片操作
print(s[-7:]) # c123456
# i=2, j=9, k=2的正向切片操作
print(s[2::2]) # c246
# i=-7, j=9, k=2的正向切片操作
print(s[-7::2]) # c246
# i=0, j=9, k=2的正向切片操作
print(s[::2]) # ac246
# i=1, j=-1, k=2的正向切片操作
print(s[1:-1:2]) # b135
# i=7, j=1, k=-1的負向切片操作
print(s[7:1:-1]) # 54321c
# i=-2, j=-8, k=-1的負向切片操作
print(s[-2:-8:-1]) # 54321c
# i=7, j=-10, k=-1的負向切片操作
print(s[7::-1]) # 54321cba
# i=-1, j=1, k=-1的負向切片操作
print(s[:1:-1]) # 654321c
# i=0, j=9, k=1的正向切片
print(s[:]) # abc123456
# i=0, j=9, k=2的正向切片
print(s[::2]) # ac246
# i=-1, j=-10, k=-1的負向切片
print(s[::-1]) # 654321cba
# i=-1, j=-10, k=-2的負向切片
print(s[::-2]) # 642ca
