Python中的切片容易混淆,这里总结一下自己的看法
切片的语法
| 1 | a | ||
| 2 | x | ||
| 1 | slice([start], stop[, step] | ||
| 2 | | |
| 3 | step的符号表示一种方向的含义 | |
| 4 | +:从左向右看,start默认是0,stop默认是索引最大值 |
| 5 | -:从右向左看,start默认是索引最大值,stop默认是0 |
| 1 | 1.先看第三个参数,如果该数为正,则从前往后数,如果为负,则从后往前数,如果非1,则是跳步来数(1表示走一步,跳0步) | |
| 2 | 2.PYTHON总是左开右闭的,也就是说第一个参数要包括,第二个参数不包括 | |
| 3 | 3.如果第一个参数没填,则自动设为第一个参数(根据第三个参数的正负判断是整数第一个还是倒数第一个) |
| 4 | 4.如果第二个参数没填,则自动设定为最后一个参数(根据第三个参数的正负判断是整数第一个还是倒数第一个 |
| 5 | |
示例
| 01 | >>> s | |
| 02 | >>> s[5:0:-1] | |
| 03 | [5, | |
| 04 | >>> s[5:4:-1] | |
| 05 | [5] | |
| 06 | >>> s[:3:-1] | |
| 07 | [9, | |
| 08 | >>> s[0:3:-1] | |
| 09 | [] | |
| 10 | >>> s[9::-1] | |
| 11 | [9, | |
| 12 | >>> s[::2] | |
| 13 | [0, |
代码分析
| 01 | 首先定义 s | |
| 02 | | |
| 03 | Python中正索引是从0开始的,负索引从-1开始,索引1对应1, 而索引-1对应9. | |
| 04 | | |
| 05 | s[5:0:-1]: | |
| 06 | | |
| 07 | | |
| 08 | s[:3:-1]: | |
| 09 | |
| 10 | |
| 11 | | |
| 12 | s[9::-1]: | |
| 13 | | |
| 14 | | |
| 15 | s[::2]: | |
| 16 | | |
| 17 | |
















