python中step什么意思_关于python列表(list)切片[start:stop:step]的理解

列表切片的语法

1 names=["bbguo","bbliang","bbxi","bbwang","bbbo","bbya","bbyi","bbqing"]2 print(a[0:3:2]) #切片格式 变量名[start:stop:step],3个参数分别是切片的起始下标,停止下标和步长。

理解:

1、切片的step的值是正还是负,决定切片的方向:

1.1 即step为正数时(step>0),代表从左往右切片,即start下标值小于stop下标值,比如上面的列表,

1 names=["bbguo","bbliang","bbxi","bbwang","bbbo","bbya","bbyi","bbqing"]2 print(names[1:5:2]) #step为2,大于0,从左往右切,从start开始(含start的值"bbliang"),stop结束(不含stop的值"bbya"),语法逻辑要求start须小于stop才会认为语法正确,并执行切片操作,这里start=1,stop=5,start

3 ['bbliang', 'bbwang'] #输出结果

1.2 当step为负数时(step<0),代表从右往左切片,即start下标值需要大于stop下标值,编译器才可以判断并执行切片操作。

1 names=["bbguo","bbliang","bbxi","bbwang","bbbo","bbya","bbyi","bbqing"]2 print(names[5:1:-2]) #step为-2,小于0,从右往左执行切片,从start开始(含start的值“bbya”),stop结束(不含stop的值"bbliang"),语法逻辑要求start须大于stop,编译器才会认为语法正确执行切片操作,这里start=5,stop=1,start>stop,

3 ['bbya', 'bbwang'] #输出结果

2、start、stop、step 为空值时的理解,空值得理解

2.1 start的空值,即start的第一个值,当step为正的时候,start的空值为下标0,stop的空值为下标7,这里这个例子就是:names[0] ;当step为负的时候,start的空值代表下标7,stop的空值代表下标0,列表的最后一个数据,即names[leng-1], 即star

和stop的空值代表列表的头和尾,依据step的是正还是负来颠倒,例子:

step为1时:

1 names=["bbguo","bbliang","bbxi","bbwang","bbbo","bbya","bbyi","bbqing"]2 print(names[::1]) #start为0,stop 为lenth(注意不是7,因为包含bbqing)

3 ['bbguo', 'bbliang', 'bbxi', 'bbwang', 'bbbo', 'bbya', 'bbyi', 'bbqing'] #输出结果

step为-1时:

1 names=["bbguo","bbliang","bbxi","bbwang","bbbo","bbya","bbyi","bbqing"]2 print(names[::-1]) #start 为 lenth(注意不是7,包含bbqing),stop为0

3 ['bbqing', 'bbyi', 'bbya', 'bbbo', 'bbwang', 'bbxi', 'bbliang', 'bbguo'] #输出结果

2.2 step的空值代表默认1。

3、列表下标,以及切片时start,stop的负值的理解:

3.1 首先列表下标为负值时,即代表从列表右边数起来倒数第几个元素,比如names[-1]即代表,names这个列表右边第一个元素。例子如下:

1 names=["bbguo","bbliang","bbxi","bbwang","bbbo","bbya","bbyi","bbqing"]2 print (names[-1]) #-1下标代表列表的倒数第一个元素,即右边第一个元素

3 bbqing #输出结果

同理可以推出names[-2],names[-3]

3.2 切片的start和stop为负值时,无论step是正还是负,start和stop的负值都代表的是列表从左到右的倒数第几个元素。也就是说比如无论names[-1::1]、names[-1::-1],names[:-1:1]、names[:-1:-1],names[start]或者names[stop]的-1代表的都是names

这个列表中倒数第一个数据(bbqing),step正负这里只是用来判断切片的方向,继而查看切片的start和stop按照step的方向,是否有数据可以切片。当step>0时,比如step=1,由于names[-1::1]的start 位置以及是右边的倒数第一个数据了,即这个列表

的最后一个数据,所以按照step正数向右切片,所以stop的空值也是这个数据,所以根据切片包含start的逻辑,而stop空值右包含最后一个数据,所以names[-1::1]输出结果将为bbqing。

1 names=["bbguo","bbliang","bbxi","bbwang","bbbo","bbya","bbyi","bbqing"]2 print (names[-1::1])3 ['bbqing'] #输出结果

3.2 当step为正,代表切片方向从左往右,如果切片的范围区间不正确,没有数据,输出结果将为空值。举例如下:

1 names=["bbguo","bbliang","bbxi","bbwang","bbbo","bbya","bbyi","bbqing"]2 print(names[-4:5:-1]) #step-1,即代表从右往左切片,start值为-4,即右边倒数第四个数据(bbbo),stop为5,即左边数起第小标5的数据(bbya),从bbo开始,bbya结束,不符合-1从右往左切片的方向要求,所以切片区间内没有值,输出空值。

3 [] 输出结果

综上所有实验数据得出的结论主要有一下3点:

python的列表切片,1、方向由step确定,step为正时,从左往右切片,step为负时,从右往左切片。

2、start和stop的正值代表列表下标,负值代表列表从左往右数起,倒数第几个数据。

3、start和stop的空值分别代表列表的头尾的最后一个数据,至于start和stop空值的时候代表的是列表的头还是尾,由step的正负值决定,即由step确定列表切片的方向后决定。当step为正时,即代表从左往右切片,则start的空值代表左边的

开头,stop的空值代表右边的结尾。当step为负值时,即代表从右往左切片,则start的空值代表右边的开头,stop的空值代表左边的结尾。

当step为负时,start的空值代表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值