【python原理解析】python中分片的实现原理及使用技巧
首先:说明什么是序列?
序列中的每一个元素都会被分配一个序号,即元素的位置,也称为索引;在python中的序列包含:字符串、列表和元组
然后是:什么是分片?
分片就是通过操作索引访问及获得序列的一个或多个元素,也叫作切片。
如果序列中有N个元素,索引的范围,正序是:0到N-1,逆序是:-N到-1
分片的操作一般需要三个参数,例如获取a的第一个元素到第三个元素,则应该为:a[0,3,1]
其中0代表第一个元素的索引,3代表第三个元素的索引的后面的值,1代表递增数,也就是从0开始每一次加1来获取下一个元素,这个也可以通过for循环来实现
目前看到的对于分片来说,很明显的一个例子就是:分片可以实现逆序,通过下方的代码:
def f1():
list1 = [1,2,3,4,5]
list2 = list1[4::-1]
print list1
print list2
结果是:
递增数为2的代码如下:
def f2():
list1 = [1,2,3,4,5,6,7,8]
list2 = list1[2:7:2]
print list1
print list2
结果是:
按照负数索引值获取内容的代码如下:
def f3():
list1 = [1,2,3,4,5,6,7,8]
list2 = list1[-8:-3:1]
print list1
print list2
结果是:
在字符串中使用分片的情况如下:
def f4():
str1 = "good idea!"
str2 = str1[1:6:2]
print str1
print str2
结果是:
以上是关于get_slice的记录,下面是set_slice的记录:
def f5():
list1 = [1,2]
list1[1:4] = [11,3,4]
print "替换部分元素,并增加部分元素后:", list1
list2 = [1,2,3,4,5]
list2[2:4] = []
print "置空某些元素:", list2
list3 = [1,2,3,4]
list3[1:7] = [111]
print "右索引大于总长度,且右边的列表比左边的索引差值小:", list3
list4 = [1,2,3,4]
list4[2:3] = [5,6,7,8,9,10]
print "右边列表比左边的索引差值大:",list4
结果是: