切片

切片
  元素与元素之间如果有先后顺序,那么这种数据结构称为序列。
  在Python中,常见的序列有:字符串string、元组tuple和列表list。
  可以使用索引的方式获取序列中的单个元素。序列的索引从0开始,索引0表示左边开始的第一个元素,索引1代表左边开始的第二个元素,以此类推。也可以使用负数,索引-1表示右边开始的第一个元素,索引-2表示右边开始的第二个元素,以此类推。
  如果希望从序列中获取多个元素,可以使用切片技术。切片包含两个索引:起始索引和终止索引,两个索引使用分号:分隔。切片实际的内容包含从起始索引开始,到终止索引的前一个索引的值,即不包含终止索引的值。
    起始索引和终止索引都是可选的,即可以不指定起始索引或者终止索引,甚至可以两个索引都不指定。如果不指定索引,则其索引取默认值。起始索引的默认值是0,终止索引的默认值是最后一个元素的索引加一。
  下面是一个通过切片获取内容的例子:
# -*- coding: utf-8 -*-

s = "Python is a programming language."
print("s[0]:", s[0])    # 通过索引获取从左边开始的第一个值
print("s[1]", s[1])     # 通过索引获取从左边开始的第二个值
print("s[-1]:", s[-1]) # 通过索引获取从右边开始的第一个值
print("s[-2]:", s[-2]) # 通过索引获取从右边开始的第二个值
print("s[7:9]:", s[7:9])    # 指定起始索引为7,终止索引为9。通过切片获取从索引7到索引9(但不包括索引9)的值
print("s[:9]:", s[:9])     # 不指定起始索引,指定终止索引为9
print("s[7:]:", s[7:])     # 指定起始索引为7,不指定终止索引
print("s[:]:", s[:])        # 起始索引和终止索引都不指定

  程序执行的输出为:

s[0]: P
s[1] y
s[-1]: .
s[-2]: e
s[7:9]: is
s[:9]: Python is
s[7:]: is a programming language.
s[:]: Python is a programming language.

  通过切片不仅能获取内容,还可以通过切片来修改内容,前提是必须是可变数据类型,例如列表list就可以,而字符串string和元组tuple就属于不可变类型,不能修改内容。
  下面是一个通过切片设置内容的例子:
# -*- coding: utf-8 -*-

lst = ['a', 'b', 'c', 'd', 'e']
print("lst:", lst)
print("lst[2:4]:", lst[2:4])    # 指定起始索引为2,终止索引为4。通过切片获取从索引2到索引4(但不包括索引4)的值
lst[2:4] = ['L', 'M', 'N']     # 将切片[2:4]的内容修改为['L', 'M', 'N']
print("lst:", lst)

  程序执行的输出是:

lst: ['a', 'b', 'c', 'd', 'e']
lst[2:4]: ['c', 'd']
lst: ['a', 'b', 'L', 'M', 'N', 'e']