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)

这两种方法用切片会好一些,因为切片不会修改序列结构。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章