Python切片
嘛,所谓切片故名思意就有选取的意思啦, 跟java里面的subString()意思差不多, 从原始的字符串中按规则提取出新的字符串
切片的用法很简单, 可以提取一个list或者tuple的部分元素, 比如,一个list如下:
L = ["miaomiao", "wangwang", "miemie", "aoao"]
我们现在要取前面两个:
L[0:2]
输出: ["miaomao", "wangwang]
如果第一个索引是0, 辣么也是可以省略的啦, L[:2]效果一样
其他的类似, 第一个索引是开始位置(0开始), 第二个索引表示结束位置但是不包括索引所在位置的元素,也就是第二个索引表示的位置的前一个元素的位置。
* 这里截取的方向是从左到右, 也就是如果第一个索引处向右如果没有遇到第二个索引表示的位置,辣么截取的就是空的,比如L[2: 1], 输出[]
我们知道python有个很人性的设定, 列表或者负数的下表从-1开始依次代表最后一个元素, 依次类推,不要迷糊哦,这里只是一种表示位置的写法,比如L[1: -1], 第二个索引-1代表的是倒数第一个元素的前一个元素, 所以这里的结果是:["wangwang", "miemie], 这个结果和L[-3:-1]一样的
L[1:]表示从位置1开始以后的所有元素
L[:-2] 表示直到倒数第三个位置的所有元素
*如果下表表示位置越界了, python会自动处理(越界部分不显示, 输出合法部分的信息)
还可以有第三个索引的写法, 不过第三个索引表示的前两个索引规则的方向以及表示的字符串格多少个街区
这里所谓的方向是指:
1从第一个索引所在的位置,是向正方向出发匹配索引二,还是从父方向匹配索引二
2第二个索引表示的位置是第二个索引的左边还是右边的那个元素, 如果是正方向,这里表示左边的那个元素,负方向表示右边的那个元素
嘛, 上面说的从左到右就是正方向的一种说法, 数学里面的一维坐标表示法
比如:
L[-1: -4: -2]
这里第三个所以为负, 所以方向是负的, 第一个索引表示的位置是倒数第一个, 从负方向出发找第二个索引表示的位置, 第二个索引是-4, 方向是负的,所以表示的是倒数第4个元素负方向也就是倒数第3个元素。
结果是:['aoao', 'wangwang']
不管索引是正是否, 首先根据第三个索引判断方向, 如果没有第三个索引,那么默认是正向, 接着判断第一个索引表示的位置, 然后判断第二个索引表示的位置,但是第二个索引的位置没有被包含,如果是正向,辣么表示左边的元素, 负向表示右边的元素, 确定第二个索引的位置后, 根据方向判断是从第一个索引表示的位置的左边出发还是右边出发,没有遇到第二个索引表示的位置,辣么就是空的, 否则结果就是这些元素啦, 最后根据第三个索引的值隔着取就好了,默认是1