分片是Python中一个非常有意思的功能。基本的模式是list[startIndex:endIndex],所取的元素是startIndex到endIndex-1。不过这里要注意的是这里的startIndex是指list中的第startIndex+1个元素(按正数分片的情况),默认的步长是1。这就是分片的一个基本认识。当我在看到《Python编程金典》的分片时,有这样一句话让我挺困惑的“负的分片不能直接访问列表的最后一个元素”。与正分片不同的是,负分片是从尾部开始的,倒数第一个元素为list[-1],倒数第二个元素为list[-2],然后依次是list[-3], list[4]...
下面通过一个例子来看吧。
aList = [1, 2, 3, 4, 5]
那么
aList[-5:]和aList[:]
[1, 2, 3, 4, 5]
aList[-5:-1]
[1, 2, 3, 4]
按照前面的理解,也确实是这样。
后来我就想,既然是这样的话,那么如果是aList[-5:0]呢,这样步长为1,则貌似可以步进到aList[-1]这个元素。而结果是
aList[-5:0]
[]
aList[-1:2]
[]
aList[-1:2:-1]
[5, 4]
aList[-1:3:-1]
[5]