How can I slice a list till end with negative indexes
我了解到python列表也可以使用负索引进行遍历,所以我尝试使用负索引对列表进行切片/子列表,但我不能将其切片到最后。
我的清单是:
1 | areas = ["hallway", 11.25,"kitchen", 18.0,"living room", 20.0,"bedroom", 10.75,"bathroom", 9.50] |
由于知道切片语法是
这是一
你可以找的。
1 2 | >>> areas[-4:] ['bedroom', 10.75, 'bathroom', 9.5] |
当最后的指数是不是指定的,它是假定你排到很端。
这一规定将使
1 2 | >>> areas[-4:0:-1] ['bedroom', 20.0, 'living room', 18.0, 'kitchen', 11.25] |
perfectly发生是有效的。在这里,你
这是不负
如果你是单一的层是在硬编码的问题,因为你可以离开只是在右边的
但如果你是怎么做的,在运行时计算的结果吗?
1 2 3 4 5 6 7 | >>> for left in range(-8, -3, 2): ... right = left + 4 ... print(areas[left:right]) ... ['kitchen', 18.0, 'living room', 20.0] ['living room', 20.0, 'bedroom', 10.75] [] |
你发现这不是工作。
你会经常听到,只是添加到列表的长度:
1 2 3 4 5 6 7 | >>> for left in range(-8, -3, 2): ... right = left + 4 ... print(areas[len(areas)+left:len(areas)+right]) ... ['kitchen', 18.0, 'living room', 20.0] ['living room', 20.0, 'bedroom', 10.75] ['bedroom', 10.75, 'bathroom', 9.5] |
但这并不总是工作,所以:
1 2 3 4 5 6 7 8 9 | >>> for left in range(-12, -3, 2): ... right = left + 4 ... print(areas[len(areas)+left:len(areas)+right]) ... [] ['hallway', 11.25, 'kitchen', 18.0] ['kitchen', 18.0, 'living room', 20.0] ['living room', 20.0, 'bedroom', 10.75] ['bedroom', 10.75, 'bathroom', 9.5] |
操作系统是一个成语,在更多的作品在几例:
1 2 3 4 5 6 7 8 9 | >>> for left in range(-12, -3, 2): ... right = left + 4 ... print(areas[left or None:right or None]) ... ['hallway', 11.25] ['hallway', 11.25, 'kitchen', 18.0] ['kitchen', 18.0, 'living room', 20.0] ['living room', 20.0, 'bedroom', 10.75] ['bedroom', 10.75, 'bathroom', 9.5] |
但你可以打破这个吧:
1 2 3 4 5 6 7 8 9 10 | >>> for left in range(-12, -1, 2): ... right = left + 4 ... print(areas[left or None:right or None]) ... ['hallway', 11.25] ['hallway', 11.25, 'kitchen', 18.0] ['kitchen', 18.0, 'living room', 20.0] ['living room', 20.0, 'bedroom', 10.75] ['bedroom', 10.75, 'bathroom', 9.5] [] |
从这学习,我们是什么?负指数是好的,但需要一些硬编码的动态护理时使用。在程序中,它可以被避免的负safest consistently
首先,我想你怎么能接入层利用区:0 [ 4 ],它应该返回一个空列表。
http:/ / / / carefreeoilyline repls repl.it
您可以使用[ 4 ]。这应该返回
1 2 | > areas[-4:] => ['bedroom', 10.75, 'bathroom', 9.5] |
事实上,你可以认为
1 2 3 4 5 6 7 8 | > areas[len(areas)-4:] => ['bedroom', 10.75, 'bathroom', 9.5] > areas[0:-4] => ['hallway', 11.25, 'kitchen', 18.0, 'living room', 20.0] > areas[0:len(areas)-4] => ['hallway', 11.25, 'kitchen', 18.0, 'living room', 20.0] > areas[0:6] => ['hallway', 11.25, 'kitchen', 18.0, 'living room', 20.0] |
不能代表0和0 - 0和Len(区)在同一时间。当然,它的工作与