另一个有趣的潜在解决方案。
>>> arr = [1, 2, 3]>>> index = 0>>> arr[:-index or None][1, 2, 3]>>> index = 1>>> arr[:-index or None][1, 2]
为了在诸如字符串之类的不可变序列类型上获得更高的性能,可以在切片操作 之前 检查index的值来避免在index为0的情况下完全切片序列。
这里是要测试性能的三个功能:
def shashank1(seq, index): return seq[:-index or None]def shashank2(seq, index): return index and seq[:-index] or seqdef shashank3(seq, index): return seq[:-index] if index else seq
后两者应当是 多 在指数是0的情况下更快,但也可以是在其它情况下更慢(或更快)。
更新的基准代码: http :
//repl.it/oA5
注意:结果在很大程度上取决于Python的实现。


![在[:index]上使用动态索引进行列表切片 在[:index]上使用动态索引进行列表切片](http://www.mshxw.com/aiimages/31/652107.png)
