Python中的分片

Python中的分片

Python中使用索引来访问序列中的某一个元素,如果要访问序列中某一定范围内的元素,可以使用分片来完成。

分片操作是通过由冒号相隔的两个索引号来实现的:sequence[indexStart : indexEnd]

例如:

      >>> numbers = [5, 1, -2, 67, 10, 23, 100]

      >>> numbers[2 : 4]

      [-2, 67]

      >>> numbers[2: -3]

      [-2, 67]

也可以加上步长,例如

      >>> numbers[0:6:2]

      [5, -2, 10]

 

分片操作可以表示为:

sequence[indexStart : indexEnd : stride]

按步长stride从序列sequence中取出从indexStart开始到indexEnd终止范围内的元素组成一个新的序列

indexStart: 起始索引号,它的值可以是正的也可以是负的,它所对应的元素会加入到新的序列中;该索引号指的是原始序列中的索引号,而不是新序列中的索引号

indexEnd:  终止索引号,它的值可以是正的也可以是负的,它所对应的元素不会加入到新的序列中;该索引号指的是原始序列中的索引号,而不是新序列中的索引号

stride:        步长,它的值可以是正的也可以是负的,可以省略,省略时使用默认步长,默认步长为正1

indexStart 可以省略,省略时,若stride为正的,则表示序列的首个元素;若stride为负的,则表示序列的最后一个元素

indexEnd  也可以省略,省略时,若stride为正的,则表示序列的最后一个元素;若stride为负的,则表示序列的首个元素

 

分片操作其实就是按照一定的顺序访问序列中某一范围内的元素,记住一点就行了,那就是在一定的访问顺序中,indexStart所对应的元素必须先于indexEnd所对应的元素被访问到,否则,分片操作返回的就是空的序列;

具体来说,就是先看访问顺序,其实就是先看步长,因访问顺序是由步长来决定的,

当步长为正时:按从原始序列sequence的头部(从左)到尾部(到右)的顺序访问序列中的元素,indexStart在原始序列sequence中所对应的元素必须出现在indexEnd所对应的元素的左边

当步长为负时:按从原始序列sequence的尾部(从右)到头部(到左)的顺序访问序列中的元素,indexStart在原始序列sequence中所对应的元素必须出现在indexEnd所对应的元素的右边

例如:

     >>> numbers = [5, 1, -2, 67, 10, 23, 100]

     >>> numbers[5:3]

      []

     >>> numbers[5:3:-1]

     [23, 10]

      >>>numbers[0:5:2]

      [5,-2, 10]

     >>> numbers[3:3]

     []

      >>>numbers[3:3:-1]

     []

     >>> numbers[-2:4:-1]

     [23]

     >>> numbers[ : 4 : -1]

     [100, 23]

     >>> numbers[-2 : 5 : -1]

     []

     >>> numbers[-2 : : -1]

      [23,10, 67, -2, 1, 5]

     >>> numbers[: : -1]

      [100,23, 10, 67, -2, 1, 5]

你可能感兴趣的:(Python)