切片

  1. 可以实现截取数列,字符串等的一部分
  2. 简单切片:l[start:stop],得到下标在范围内前闭后开区间范围内的元素,为负数时看作负数对应的下标
  1. 超出索引范围的切片参数,可以看成把list以空元素延长,进行切片操作后,去掉空元素后得到结果,

例如:

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[-100:5]
[0, 1, 2, 3, 4]
>>> a[5:100]
[5, 6, 7, 8, 9]
>>> a[-100:100]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[100:1000]
[]
  1. startstop大,则得到空list
  2. 切片参数可以缺省,缺省的参数看作取尽可能大的区间,

例如:

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:5]
[0, 1, 2, 3, 4]
>>> a[5:]
[5, 6, 7, 8, 9]
>>> a[100:]
[]
  1. 扩展切片:a[start:stop:step]start对应的位置出发,以step为步长索引序列,直至越过stop对应的位置,且不包括stop本身
  2. step为负数时,访问时逆序的,缺省时依旧是取尽可能大的区间

例如:

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[5::-1]
[5, 4, 3, 2, 1, 0]
>>> a[:4:-2]
[9, 7, 5]
>>> a[::-1]#得到逆序list
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
  1. 一些例子:
#截取数列前三个数
l = [1, 2, 3, 4]
l[0:3]   #表示从索引0开始取,到索引3为止,不包括索引3
l[:3]    #若从0开始,可以省略
l[1:3]   #从索引1开始,取两个元素
l[-2:]   #从倒数第二个开始取到结尾
l[-2:-1] #取最后两个
l[:10:2] #表示前10个每两个取一个
l[:]     #表示原样复制一个list
#tuple也是list,不过不可变,切片后仍是tuple
(0, 1, 2, 3)[:3]  #结果:(0, 1, 2)
#字符串也可以看成list,切片后仍是字符串
'ABCDEFG'[::2]      #结果'ACEG'