学习完基础发现其实还很多细节没搞清楚,于是百度了很多,自己总结了一篇笔记
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 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。