Python:Python序列的切片操作
Python序列的切片操作
序列(consequence)是 python 中一种数据结构,这种数据结构根据索引来获取序列中的对象。
一般说来,具有序列结构的数据类型都可以使用:index, len, max, min, in, +, *, 切片。如:
a="abcdefg"
print(len(a))#7
print(max(a))#g
print(min(a))#a
print(a+a)#abcdefgabcdefg
print(a*3)#abcdefgabcdefgabcdefg
print(a[2:5])#cde
print(a.index("c"))#2
print(a[4])#e
切片
对于具有序列结构的数据来说,切片操作的方法是:consequence[start_index: end_index: step]
- start_index: 表示的是第一个元素对象,如果不写的话,默认就是0,即为起始位置。正索引位置默认为0;负索引位置默认为 -len(consequence)
- end_index: 表示的是最后一个元素对象,默认就是取到末尾。正索引位置默认为 len(consequence)-1;负索引位置默认为 -1。
- step: 表示步长,默认为1,步长不能为0。
对于序列结构数据来说,索引和步长都具有正负两个值,分别表示左右两个方向取值。索引的正方向从左往右取值,起始位置为0;负方向从右往左取值,起始位置为-1。
简单的说,切片就是从你第一个想要的对象开始,到你第一个不想要的对象结束。(也就是说它是一个左闭右开的区间,一步走几个对象由你设置的步长决定)
常用场景
#con[start_index]
print(a[3]) #d(取下标为3的元素)
#con[start_index:]
print(a[3:]) #defg(从下标为3取到结尾,步长默认1)
#con[: end_index]
print(a[:3]) #abc(默认起始位置为0,也就是从开始取到下标为3,不包括下标为3的元素)
#con[:]
print(a[:]) #abcdefg(全缺省就是取开始到结尾的整个片段)
#con[start_index: end_index]
print(a[2:5]) #cde(从下标为2,取到下标为5,但是不包括下标为5)
#con[start_index: end_index : step]
print(a[1::2]) #bdf(从下标为1开始,取到结尾,步长为2)
#con[::step]
print(a[::2]) #aceg(正序取,步长为2)
需要注意一哈~千万不能越界喽
!!!以下三行代码是错误示范!是错误示范!:
list1=[1,2,3,4,5,6]
print(len(list1)) #6,list1的长度是6
print(list1[len(list1)]) #这里会报错,越界访问(IndexError: list index out of range)
用切片逆置序列
用切片逆置序列非常的简单方便,一行python就可以搞定啦!
#用切片逆置序列
a="abcdefg"
b=[1,2,3,4,5,6]
c=(11,22,33,44,55,66)
print(a[::-1])
print(b[::-1])
print(c[::-1])
#如果是list的话,用reverse也可以逆置
b.reverse()
print(b)
这两种方法用切片会好一些,因为切片不会修改序列结构。
Python:Python序列的切片操作
Python序列的切片操作
序列(consequence)是 python 中一种数据结构,这种数据结构根据索引来获取序列中的对象。
一般说来,具有序列结构的数据类型都可以使用:index, len, max, min, in, +, *, 切片。如:
a="abcdefg"
print(len(a))#7
print(max(a))#g
print(min(a))#a
print(a+a)#abcdefgabcdefg
print(a*3)#abcdefgabcdefgabcdefg
print(a[2:5])#cde
print(a.index("c"))#2
print(a[4])#e
切片
对于具有序列结构的数据来说,切片操作的方法是:consequence[start_index: end_index: step]
- start_index: 表示的是第一个元素对象,如果不写的话,默认就是0,即为起始位置。正索引位置默认为0;负索引位置默认为 -len(consequence)
- end_index: 表示的是最后一个元素对象,默认就是取到末尾。正索引位置默认为 len(consequence)-1;负索引位置默认为 -1。
- step: 表示步长,默认为1,步长不能为0。
对于序列结构数据来说,索引和步长都具有正负两个值,分别表示左右两个方向取值。索引的正方向从左往右取值,起始位置为0;负方向从右往左取值,起始位置为-1。
简单的说,切片就是从你第一个想要的对象开始,到你第一个不想要的对象结束。(也就是说它是一个左闭右开的区间,一步走几个对象由你设置的步长决定)
常用场景
#con[start_index]
print(a[3]) #d(取下标为3的元素)
#con[start_index:]
print(a[3:]) #defg(从下标为3取到结尾,步长默认1)
#con[: end_index]
print(a[:3]) #abc(默认起始位置为0,也就是从开始取到下标为3,不包括下标为3的元素)
#con[:]
print(a[:]) #abcdefg(全缺省就是取开始到结尾的整个片段)
#con[start_index: end_index]
print(a[2:5]) #cde(从下标为2,取到下标为5,但是不包括下标为5)
#con[start_index: end_index : step]
print(a[1::2]) #bdf(从下标为1开始,取到结尾,步长为2)
#con[::step]
print(a[::2]) #aceg(正序取,步长为2)
需要注意一哈~千万不能越界喽
!!!以下三行代码是错误示范!是错误示范!:
list1=[1,2,3,4,5,6]
print(len(list1)) #6,list1的长度是6
print(list1[len(list1)]) #这里会报错,越界访问(IndexError: list index out of range)
用切片逆置序列
用切片逆置序列非常的简单方便,一行python就可以搞定啦!
#用切片逆置序列
a="abcdefg"
b=[1,2,3,4,5,6]
c=(11,22,33,44,55,66)
print(a[::-1])
print(b[::-1])
print(c[::-1])
#如果是list的话,用reverse也可以逆置
b.reverse()
print(b)
这两种方法用切片会好一些,因为切片不会修改序列结构。