python分片


  进行分片的时候,分片的开始和结束点需要进行指定(不管是直接还是间接)。而另外一个参数(在python 2.3 加入到内建类型)——步长(step length)——通常都是隐式设置的。在普通的分片中,步长是1——分片操作就是按照这个步长逐个遍历序列的元素,然后返回开始和结束点之间的所有元素。
>>> numbers[0:10:1]
  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]在这个例子中,分片包含了另外一个数字。没错,这就是步长的显式设置。如果步长被设置为比1大的数,那么就会跳过某些元素。例如,步长为2的分片包括的是从开始到结束每隔1个的元素。
>>> numbers[0:10:2]
  [1, 3, 5, 7, 9] numbers[3:6:3] [4]之前提及的捷径也可以使用。如果需要将每4个元素中的第1个提取出来,那么只要将步长设置为4即可:
>>> numbers[::4]
  [1, 5, 9]当然,步长不能为0——那不会向下执行——但步长可以是负数,即从右到左提取元素:
>>> numbers[8:3:-1]
  [9, 8, 7, 6, 5]
>>> numbers[10:0:-2]
  [10, 8, 6, 4, 2]
>>> numbers[0:10:-2]
  []
>>> numbers[::-2]
  [10, 8, 6, 4, 2]
>>> numbers[5::-2]
  [6, 4, 2]
>>> numbers[:5:-2]
  [10, 8]在这里要得到正确的分片结果需要动些脑筋。开始点的元素(最左边元素)包括在结果之中,而结束点的元素(最右边的元素)则不在分片之内。当使用一个负数作为步长时,必须让开始点(开始索引)大于结束点。在没有明确指定开始点和结束点的时候,正负数的使用可能会带来一些混淆。不过在这种情况下Python会进行正确的操作:对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素;而对于负数步长,则是从序列的尾部开始向左提取元素,直到第一个元素。

相关内容

    暂无相关文章

评论关闭