切片
可以通过下标取字符串、元组、列表中的指定位置的元素,如果取某一个范围内的元素,可以通过下面代码完成:
L=[]
test = ('a','b','c','d','e','f')
for x in range(1,5): # 通过循环取成对应的下标
L.append(test[x]) # 再通过下标取出对应的元素
print L
切片是对该过程的简化,它可以直接指定某一个范围内的下标。如上面的循环可以写成test[1:5],其结果是一样的。其一般形式为:start:end:step。
start指开始下标,含。
end指结束下标,不含。
step指步长,步长为正则从start向右直到end,步长为负则从start往左直到end,不指定时步长默认为1。步长为正时,不指定start则start为0,不指定end则end为最后一个元素;步长为负时,不指定start则start为-1,不指定end则end为第一个元素对应的负下标。
注意:所有的切片都是含头不含尾。下标也可为负数,-1指的是最后一个元素,-2指倒数第二个元素,其余依次类推。
start:end:step——三者都指定,则下标的取值为start,start+step,start+2*step……min(start+k*step,end),k尽量取最大。如:
L=[]
test = ('a','b','c','d','e','f')
print test[-5:5:1] # ('b', 'c', 'd', 'e')
-5对应的是是'b',5对应的是'f',步长为正,所以从'b’往右一直到'f‘,由于含头不含尾,所以输出的是'b'到'e’。再比如:
L=[]
test = ('a','b','c','d','e','f')
print test[-2:2:-1] # ('e', 'd')
步长为负,所以从'e'到'c',输出的就是'e'','d'。
从上两例可以看出,start与end的大小,正负不影响结果,只需要根据步长从左往右或从右往左即可。