假设我有一个这样的列表:
my_list = [0,1,2,3,4,5] # range(5)
Run Code Online (Sandbox Code Playgroud)
我想打印这个:
[2,1,0]
Run Code Online (Sandbox Code Playgroud)
我的python脚本是:
print(my_list[2:-1:-1])
Run Code Online (Sandbox Code Playgroud)
但它会打印一个空列表!
这是python中的一个错误(2和3!)?
我不会使用任何技巧,如:
num_of_elems_i_want = 3
print(my_list[::-1][len(my_list) - num_of_elems_i_want:])
Run Code Online (Sandbox Code Playgroud)
或第三方模块..
你可以切片list如图所示:
print(my_list[2::-1]) # L[start:end:step]
Run Code Online (Sandbox Code Playgroud)
编辑:
您获得的结果不是Bug.
请记住,list元素的遍历从左到右进行,直到end=-4[ viz 元素:5→0→1→2] 才有元素start=2.因此,返回一个空 list的结果.
出于同样的原因,你也可以这样做 print(my_list[2:-7:-1])