序列的复杂切片问题

  切片的步长默认都是1,当步长为正数时,从左往右取数值,此时起始值(start)要小于终止值(end);当步长为负数时,从右往左取值,此时的起始值(start)要大于终止值(end)。

  当起始值(start)或终止值(end)为负数时,表示从右往左看。

>>> s = 'abcdefgh'
>>> s[:6:2]    # 从左往右取值
'ace'
>>> s[1:7:-1]    # 步长为负数,从右往左取值,此时的起始值(start)要大于终止值(end)。又因为1<7,所以什么也没有去到,返回空字符串
''
>>> s[1:-2:2]    # 起始值(start)或终止值(end)为负数时,表示从右往左看,所以此时终止值为-2却会比起始值为1要大
'bdf'
>>> s[1:-2:-2]
''

  反转:

>>> s1 = s[::-1]    # 返回一个新值
>>> s1
'hgfedcba'
>>> s     # 原数据不变
'abcdefgh'

  s[ : : -1]的本质是从右边(负号表示反方向)看这个列表,然后按照步长为1取列表中的元素,并生成新的列表;若果将-1换成1,就是从左边看这个列表。

  其他序列:元组、列表类似。

 

posted @ 2018-09-03 20:15  从python开始  阅读(235)  评论(0)    收藏  举报