python学习笔记:python切片

转自:https://www.cnblogs.com/weidiao/p/6428681.html

Python中的列表切片非常灵活,要根据表象来分析它的内在机理,这样用起来才能溜。

一、切片实例

>>> print str[0:3]      #截取第一位到第三位的字符
>>> print str[:]        #截取字符串的全部字符, 第三个参数变化量delta未给出时默认为1
>>> print str[6:]       #截取第七个字符到结尾,第二个参数终止下标未给出时默认为最末之后(delta>0的情况)
>>> print str[:-3]      #截取从头开始到倒数第三个字符之前,第一个参数起始下标默认为开头(delta>0的情况)
>>> print str[2]        #截取第三个字符
>>> print str[-1]       #截取倒数第一个字符
>>> print str[::-1]     #创造一个与原字符串顺序相反的字符串,delta<0表示从后向前
>>> print str[-3:-1]    #截取倒数第三位与倒数第一位之前的字符
>>> print str[-3:]      #截取倒数第三位到结尾
>>> print str[8:2:-2]   #逆序截取,beg位表示的位置要在end位之后
>>> print str[-5:-1:-1] #逆序截取,beg位表示的位置要在end位之后

 
 可见,列表的下标有三个参数:beg(起始下标),end(终止下标),delta(变化量) 
 

  · 当delta<0时,beg默认为len(array)-1,end默认为开头之前(和range一样,end位取不到)。

        注意:delta<0时,beg位表示的位置要在end位之后,因为delta<0时是从后往前倒过来处理列表

  · 当delta>0时,beg默认为0,end默认为最末之后。  · 当delta未给出时默认为1,未给出即没有第二个冒号和其后的数字

记住倒数第一个元素的索引是-1

还需要注意的是,列表切片产生的是列表的副本,与原列表不是同一份空间。

>>> x = [1,2,3]
>>> y = x[:]
>>> x[0] = -1
>>> print(y)    #输出[1,2,3]


二、列表切片写操作

x[from:to]=[element1,element2,...]
当to<=from时,进行插入操作,即不对原列表进行替换,而是直接在from位置插入等号右边列表的元素
当to>from时,进行替换操作,即将原列表from到to-1位置的元素替换成等号右边列表的元素

>>> x = [1,2,3,4,5]
>>> x[2:1] = [100,200]      #to<=from,在from位置插入等号右边列表的元素
>>> x
[1, 2, 100, 200, 3, 4, 5]
>>> del x[2:0]          #对于切片del操作,如果to<=from,不执行任何操作
>>> x
[1, 2, 100, 200, 3, 4, 5]
>>> del x[2:2]
>>> x
[1, 2, 100, 200, 3, 4, 5]
>>> del x[2:4]
>>> x
[1, 2, 3, 4, 5]
>>> x[2:4] = None      #应该用列表
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable
>>> x[2:4] = [None]
>>> x
[1, 2, None, 5]






猜你喜欢

转载自blog.csdn.net/bobyuan888/article/details/78933755