Python可切片对象的索引方式
包括:正索引和负索引两部分,如下图所示,以list对象a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例:
一个完整的切片表达式包含两个“:”,用于分隔三个参数(start、end、step)。当只有一个“:”时,默认第三个参数step=1;当一个“:”也没有时,start=end,表示切取start指定的那个元素。
tep(步长):正负数均可,其绝对值大小决定了切取数据时的‘‘步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以步长1取值。“切取方向非常重要!”“切取方向非常重要!”“切取方向非常重要!”,重要的事情说三遍!
start:表示起始索引(包含该索引对应值);该参数省略时,表示从对象“端点”开始取值,至于是从“起点”还是从“终点”开始,则由step参数的正负决定,step为正从“起点”开始,为负从“终点”开始。
end:表示终止索引(不包含该索引对应值);该参数省略时,表示一直取到数据“端点”,至于是到“起点”还是到“终点”,同样由step参数的正负决定,step为正时直到“终点”,为负时直到“起点”。
例:
以下示例均以list对象a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例: >>>a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 1. 切取单个元素 >>>a[0] >>>0 >>>a[-4] >>>6 当索引只有一个数时,表示切取某一个元素。 2. 切取完整对象 >>>a[:] #从左往右 >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>a[::]#从左往右 >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>a[::-1]#从右往左 >>> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 3. start_index和end_index全为正(+)索引的情况 >>>a[1:6] >>> [1, 2, 3, 4, 5] step=1,从左往右取值,start_index=1到end_index=6同样表示从左往右取值。 >>>a[1:6:-1] >>> [] 输出为空列表,说明没取到数据。 step=-1,决定了从右往左取值,而start_index=1到end_index=6决定了从左往右取值,两者矛盾,所以为空。 >>>a[6:2] >>> [] 同样输出为空列表。 step=1,决定了从左往右取值,而start_index=6到end_index=2决定了从右往左取值,两者矛盾,所以为空。 >>>a[:6] >>> [0, 1, 2, 3, 4, 5] step=1,表示从左往右取值,而start_index省略时,表示从端点开始,因此这里的端点是“起点”,即从“起点”值0开始一直取到end_index=6(该点不包括)。 >>>a[:6:-1] >>> [9, 8, 7] step=-1,从右往左取值,而start_index省略时,表示从端点开始,因此这里的端点是“终点”,即从“终点”值9开始一直取到end_index=6(该点不包括)。 >>>a[6:] >>> [6, 7, 8, 9] step=1,从左往右取值,从start_index=6开始,一直取到“终点”值9。 >>>a[6::-1] >>> [6, 5, 4, 3, 2, 1, 0] step=-1,从右往左取值,从start_index=6开始,一直取到“起点”0。



