切片的步长默认都是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,就是从左边看这个列表。
其他序列:元组、列表类似。