为什么在Python中使用切片[:-0]返回空列表?

14

今天在编写一些单元测试时,偶然遇到了一个有点令人困惑的问题:

blah = ['a', 'b', 'c']
blah[:-3] # []
blah[:-2] # ['a']
blah[:-1] # ['a', 'b']
blah[:-0] # []

我始终想不通为什么 blah[:-0] # [] 是这种情况,模式明显表明它应该是 ['a', 'b', 'c']。有人能帮忙解释一下为什么会这样吗?我在文档中也没找到相关的说明。


“-”符号表示倒序查找起始点。就像[:-2]返回包含最后两个元素的列表一样,[:-0]返回包含最后0个元素的列表。 - krethika
3
[:-2]表示获取除了最后两个元素以外的所有元素,并返回一个列表。 - TigerhawkT3
2个回答

13

-00,一个从 list 的开头(包含)到索引 0(不包含)的切片是一个空白的 list


简要讨论一下“-0”就是“0”,你必须记住编译器在解析时评估术语,因此当它看到“-0”时,最终会保留“0”。 - bmhkim
这就是“-0等于0”的全部要点。没有必要记两次同样的事情。 - TigerhawkT3

9

Python不会将-00区别对待。

blah[:0]

表示的是从第一个元素开始到但不包括第一个元素之前的所有元素。这是一个空列表,blah[:-0] 就是完全相同的结果。

你可以通过检查来测试它:

blah[0:]

这是整个列表,从第一个元素开始。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接