Python09线性结构与切片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python09线性结构与切片相关的知识,希望对你有一定的参考价值。
一、线性结构
list、tuple、str、bytes、bytearray,range()
都是顺序存储、顺序访问的、都是可迭代对象、都可以通过索引访问;被称为线性结构
可使用len()获取长度、可以切片,可以使用iter()将可迭代对象转换为迭代器
In [16]: r = range(8) In [17]: r Out[17]: range(0, 8) In [18]: i = iter(range(8)) In [19]: i Out[19]: <range_iterator at 0x7f2417b7e5d0> In [20]: next(i) Out[20]: 0 In [21]: next(i) Out[21]: 1 In [23]: len(r) Out[23]: 8 In [24]: l = ["a", 0, 1] In [25]: i = iter(l) In [26]: type(i) Out[26]: list_iterator In [27]: next(i) Out[27]: ‘a‘ In [28]: next(i) Out[28]: 0 In [29]: next(i) Out[29]: 1 In [30]: next(i) --------------------------------------------------------------------------- StopIteration Traceback (most recent call last) <ipython-input-30-bed2471d02c1> in <module>() ----> 1 next(i) StopIteration:
可迭代对象都可以用len获取长度,使用iter()转化成迭代器(iterator)
二、切片操作
通过索引获取获取某个片段的值
格式:
list[start:stop:step] # 包含start不包含stop;返回一个新的list,不会对原list修改
In [1]: lst = list(range(5)) In [2]: lst Out[2]: [0, 1, 2, 3, 4] In [3]: lst[3] Out[3]: 3 In [4]: lst[3:4] Out[4]: [3] In [6]: lst[1:5] Out[6]: [1, 2, 3, 4] In [7]: lst[1:5:2] Out[7]: [1, 3] In [8]: lst[1:5:6] Out[8]: [1] In [9]: lst[1:5:4] Out[9]: [1] In [10]: lst[1:5:3] Out[10]: [1, 4] In [11]: lst[1:5:-2] Out[11]: [] In [14]: lst[:] Out[14]: [0, 1, 2, 3, 4] In [15]: lst[:3] Out[15]: [0, 1, 2] In [16]: lst[3:] Out[16]: [3, 4] In [17]: lst[::] # star,stop,step都可以省略;默认为0,-0,1 Out[17]: [0, 1, 2, 3, 4] In [18]: lst[::2] Out[18]: [0, 2, 4] In [19]: lst[::-2] # 这时step可以使用负数 Out[19]: [4, 2, 0] In [20]: lst[::-1] Out[20]: [4, 3, 2, 1, 0] In [21]: lst[1:5:-1] Out[21]: [] In [22]: lst[:5:-1] Out[22]: [] In [23]: lst[0::-1] Out[23]: [0]
当start >= stop时,step为正时,返回空List;当step为负数时,反向
In [34]: lst[2:-1] # -1索引实际上等于len(list) + index,还是大于stop Out[34]: [2, 3] In [38]: lst[1:5] Out[38]: [1, 2, 3, 4] In [39]: lst[1:5:-2] Out[39]: [] In [40]: lst[5:1:-2] Out[40]: [4, 2]
以上是关于Python09线性结构与切片的主要内容,如果未能解决你的问题,请参考以下文章