Python切片
切片
使用索引范围访问线性结构。
语法:
- sequence[start:stop:step],返回[start,stop)区间的序列
- start为0时,可以省略,表示从头取到stop-1索引;stop为0也可以省略,表示取start到结尾的整个序列,支持负索引。
- start超过左边界,表示取到开头,stop超过右边界,表示取到结尾。
- start索引对应的元素一定要在stop-1索引的左边,否则,截取后为空串
- [:]表示截取整个字符串,相当于copy()
In [43]: 'www.python.org'[4:] Out[43]: 'python.org' In [44]: 'www.python.org'[0:] Out[44]: 'www.python.org' In [45]: 'http://www.python.org'[:4] Out[45]: 'http' In [48]: 'http://www.python.org'[-10:17] Out[48]: 'python' In [49]: 'http://www.python.org'[-10:-17] Out[49]: '' In [53]: b'http://www.python.org'[-25:-17] Out[53]: b'http' In [54]: tuple('http://www.python.org')[-25:-17] Out[54]: ('h', 't', 't', 'p') In [55]: list('http://www.python.org')[-25:-17] Out[55]: ['h', 't', 't', 'p']
按步长切片
正数步长
In [56]: list('http://www.python.org')[-25:-8:2] Out[56]: ['h', 't', ':', '/', 'w', '.', 'y'] In [57]: a=list(range(10)) In [58]: a[::3] Out[58]: [0, 3, 6, 9] In [59]: a[0:5:2] Out[59]: [0, 2, 4]
负步长
In [60]: a Out[60]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [61]: a[8:2:-2] Out[61]: [8, 6, 4] In [62]: a[::-2] Out[62]: [9, 7, 5, 3, 1]
In [65]: a[:5:-2] Out[65]: [9, 7] In [66]: a[4::-2] Out[66]: [4, 2, 0]
步长不能为0
In [64]: a[::0] --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-64-7ec8febe9a5b> in <module> ----> 1 a[::0] ValueError: slice step cannot be zero
特殊的切片方法
使用了封装和解构
In [1]: lst=[] In [2]: lst[:]=(1,2) In [3]: lst Out[3]: [1, 2] In [4]: lst[0:]=(4,3) In [5]: lst Out[5]: [4, 3] In [6]: lst[1:]=(2,1) In [7]: lst Out[7]: [4, 2, 1]
posted on 2020-08-05 16:50 hopeless-dream 阅读(124) 评论(0) 编辑 收藏 举报