Python序列的切片操作与技巧

Posted 佩雷尔曼的信徒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python序列的切片操作与技巧相关的知识,希望对你有一定的参考价值。

切片操作

对于具有序列结构的数据来说,切片操作的方法是:consequence[start_index: end_index: step]。

start_index:
表示是第一个元素对象,正索引位置默认为0;负索引位置默认为 -len(consequence)

end_index:
表示是最后一个元素对象,正索引位置默认为 len(consequence)-1;负索引位置默认为 -1。

step:
表示取值的步长,默认为1,步长值不能为0。

[注意]对于序列结构数据来说,索引和步长都具有正负两个值,分别表示左右两个方向取值。索引的正方向从左往右取值,起始位置为0;负方向从右往左取值,起始位置为-1。因此任意一个序列结构数据的索引范围为 -len(consequence) 到 len(consequence)-1 范围内的连续整数。

切片操作会将按照给定的索引和步长,截取序列中由连续的对象组成的片段,单个索引返回值可以视为只含有一个对象的连续片段。

切片的过程是从第一个想要的对象开始,到第一个不想要的对象结束。第一个想要的对象到第一个不想要的对象之间的连续对象就是你所有想要的对象。

因此在consequence[start_index: end_index]中,切片中包含了consequence[start_index],但不包括consequence[end_index]。

切片的操作类型:

con[start_index]:
返回索引值为start_index的对象。start_index为 -len(con)到len(con)-1之间任意整数。

con[start_index: end_index]:
返回索引值为start_index到end_index-1之间的连续对象。

con[start_index: end_index : step]:
返回索引值为start_index到end_index-1之间,并且索引值与start_index之差可以被step整除的连续对象。

con[start_index: ]:
缺省end_index,表示从start_index开始到序列中最后一个对象。

con[: end_index]:
缺省start_index,表示从序列中第一个对象到end_index-1之间的片段。

con[:]:
缺省start_index和end_index,表示从第一个对象到最后一个对象的完整片段。

con[::step]:
缺省start_index和end_index,表示对整个序列按照索引可以被step整除的规则取值。

在使用单索引对序列寻址取值时,你所输入的索引值必须是处于 -len(consequence) 到 len(consequence)-1 之间的值,否则会报错提示索引值超出范围。
Python中含有六种内建序列类:list, tuple, string, unicode, buffer, xrange。其中xrange比较特殊,它是一个生成器,其他几个类型具有的一些序列特性对它并不适合。

以上是关于Python序列的切片操作与技巧的主要内容,如果未能解决你的问题,请参考以下文章

Python切片中的误区与高级用法

精密解析Python切片的用法

彻底搞懂python序列的切片操作

Python 切片操作符

python的切片操作

《Python学习之路 -- Python基础之切片》