Python:step的深入

学习完基础发现其实还很多细节没搞清楚,于是百度了很多,自己总结了一篇笔记

1.Sequence[start🔚step] python 的序列切片中,第一个:隔离了 起始索引 和 结束索引,第二个:隔离了 结束索引和 步长
step为正,则从左到右切片,如果 start > end,则为空
step为负,则从右到左切片,如果 start < end,则为空
针对形如 string[start🔚step] 的分片中,步长step为正数的情况下,start必须小于end;步长step为负数的情况下,start必须大于end,否则就为空。
start 和 end 填空,前者表示最开始,后者表示最后一个, 同时为空的时候,表示取所有。至于方向,取决于 step
可以总结一句规律,step 为正表示从左到右切片,反之为右到左。然后根据index 依次切片

a=list(i for i in range(1,11))
a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a[8:3:-1]
[9, 8, 7, 6, 5] # 右-》左切片,step 为1,a[8]=9, a[7]=8, … a[4]=5, 8-3=5个

a[10:0:-2]
[10, 8, 6, 4, 2] # 右-》左切片, 切片的时候,不存在 index 越界情况,a[10]不存在,a[9]=10, a[7]=8, a[5]=6…(注意这个例子,不是从10开始减,而是从9)

#上面的10可以超出索引范围使用,下面的使用10为什么引用是分片引用是空???
a[0:10:-2] # start < end step 为负, 方向为右-》左,第一个是 a[0], a[0]的左边就再也没有值了。为空
[]

a[::-2] # a[:]表示去所有,step 为负就放方向啦
[10, 8, 6, 4, 2]

下面怎么理解??

a[5::-2] # 右-》左,等价 a[5:0:-2] a[5]=6, a[3]=4, a[1]=2
[6, 4, 2]

下面怎么理解??

a[:5:-2] # 右-》左, 等价与 a[9:5:-2] a[9]=10, a[7]=8
[10, 8]

  1. 例如有如下字符串:
    1 string = “welcome to jb51_
    可以使用分片符和步长符:来给字符串进行分片和定义步长
    string = “welcome to jb51_
    #默认返回全部
    print string[:]
    #返回1到9结果
    print string[1:9]
    #返回1到9结果,步长为1
    print string[1:9:]
    #返回1到9结果,步长为2
    print string[1:9:2]
    #返回1到9结果,步长为-1
    print string[1:9:-1]
    #转置
    print string[::-1]
    结果如下:

这里发现
#返回1到9结果,步长为-1
print string[1:9:-1]
没有输出1到9的逆序,这时将string[1:9]看成第一个字符串,然后转置就行了

#返回1到9结果,步长为-1
print string[1:9][::-1]

用这个方法判断某个字符串的子串是否为回文串(正读反读都一样,例如level,noon)就很有灵性了
注:针对形如 string[start🔚step] 的分片中,步长step为正数的情况下,start必须小于end;步长step为负数的情况下,start必须大于end。

结果如下:
在这里插入图片描述
这里发现

#返回1到9结果,步长为-1
print string[1:9:-1]
没有输出1到9的逆序,这时将string[1:9]看成第一个字符串,然后转置就行了

#返回1到9结果,步长为-1
print string[1:9][::-1]

用这个方法判断某个字符串的子串是否为回文串(正读反读都一样,例如level,noon)
注:针对形如 string[start🔚step] 的分片中,步长step为正数的情况下,start必须小于end;步长step为负数的情况下,start必须大于end。

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