代码理解
如图所示,我理解 [-2::-2]是这样的:首先定义起始位置和终止位置,也就是-2: ,那么结果是,最后步长-2应该分为两步理解,显示翻转,结果是[“虎”,1],最后步长2,因为总共只有两个元素,因此选取第一个元素,结果是[“虎”],不知道我这样理解错在哪儿。我看小甲鱼的理解,应该是先理解步长-2,再去理解其他的,切片执行顺序不是start,stop,再到step吗 你的理解有一点误解。在 Python 中,切片操作的步长(step)是和切片的方向(start到stop)相关联的。如果步长为正,切片从左往右进行;如果步长为负,切片从右往左进行。因此,当你使用步长为-2的切片操作时,你实际上是在从右往左进行切片操作。先让我们看看这个列表 。Python 的索引可以是负数,负数表示从右边开始数,-1就是最右边的元素。对于这个列表,索引-2的元素就是1。
那么,当你进行 [-2::-2] 操作时,你的起始位置是-2(也就是1),结束位置为空,步长为-2。从右向左每隔一个元素选取,所以结果应该是 。
你对切片执行顺序的理解没错,确实是先指定 start 和 stop,然后再到 step,但你需要注意,步长的正负决定了切片的方向。希望这个解释对你有所帮助。 isdkz 发表于 2023-5-22 23:50
你的理解有一点误解。在 Python 中,切片操作的步长(step)是和切片的方向(start到stop)相关联的。如果 ...
结果是 ansire 发表于 2023-5-23 07:47
结果是
不过我能理解你的意思。我之前有一点误解了,就是[-2:],我理解成:是到最右侧的元素的意思,而实际上代码会先判断步长是正数还是负数,当为负数时,-2后面的冒号表示最开始的位置。 列表切片,就像是切蛋糕,把列表想象成蛋糕,从左往右切(step为正默认),从右往左切(step为负),只不过有一条潜规则就是切的距离要和第一次一致(平均分配) isdkz 发表于 2023-5-22 23:50
你的理解有一点误解。在 Python 中,切片操作的步长(step)是和切片的方向(start到stop)相关联的。如果 ...
顺序应该是start step stop,亲测 ansire 发表于 2023-5-23 22:01
顺序应该是start step stop,亲测
你测错了 isdkz 发表于 2023-5-23 22:02
你测错了
以这一题为例,如果是START,STOP,STEP顺序,那么第一步执行结果就只剩下了,最后的-2再去读取,就只能剩下[“虎”]。 ansire 发表于 2023-5-23 22:05
以这一题为例,如果是START,STOP,STEP顺序,那么第一步执行结果就只剩下了,最后的-2再去读取,就 ...
这个切片不是分成两步的呀。。。。 isdkz 发表于 2023-5-23 22:14
这个切片不是分成两步的呀。。。。
计算机的执行顺序,计算机读取完参数后,肯定有个内部执行逻辑,先怎么干、再怎么干,我的测试结果是,先确定START,再根据最后一个参数的正负数确定顺序,再去根据命令抓取里面的值
页:
[1]