切片操作(第17篇)
2016-04-12 本文已影响14人
你好星期四
给你一个列表,让你截取其中一段,你会怎么做?
你可能会想到用循环,但是Python中有一种更简单的方法。
比如你想截取列表的前两个元素,可以这么做:
>>> L = [0, 1, 2, 3, 4, 5]
>>> L2 = L[0:2]
>>> L2
[0, 1]
这就叫做切片。它的语法很简单,类似于L[0:2],其实中括号里有三个参数,完整的参数类似于这样:
>>> L[0:5:2]
[0, 2, 4]
中括号里的第一个数表示切片的开始索引;第二个数表示切片的结尾索引(但不包括这个索引);第三个数表示切片的步距,默认可以不写,表示步距为1。
这三个数都是可以省略的,第一个数省略就代表从头开始索引,第二个数省略就表示结尾为最后一个元素。
>>> L[:]
[0, 1, 2, 3, 4, 5]
需要注意的是,切片返回的是一个新的列表,原列表并没有改变。
你可能还记得前面说过列表还可以从后往前索引,最后一个元素的索引是-1,同样,切片里也支持这种方式。但负数索引只是表示索引的一种方式,它并不表示截取列表时方向顺序发生了变化,比如:
>>> L[-2:]
[4, 5]
负数索引的方式可能会让很多初学者误认为列表的截取顺序也变成了从后往前,然而事实并不是如此。
除了列表,元组和字符串也支持这种方式的切片。
>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
>>> 'ABCDEFG'[::2]
'ACEG'