hopeless-dream

导航

Python切片

切片

使用索引范围访问线性结构。

语法:

  1. sequence[start:stop:step],返回[start,stop)区间的序列
  2. start为0时,可以省略,表示从头取到stop-1索引;stop为0也可以省略,表示取start到结尾的整个序列,支持负索引。
  3. start超过左边界,表示取到开头,stop超过右边界,表示取到结尾。
  4. start索引对应的元素一定要在stop-1索引的左边,否则,截取后为空串
  5. [:]表示截取整个字符串,相当于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  阅读(130)  评论(0编辑  收藏  举报