今天在编写一些单元测试时,偶然遇到了一个有点令人困惑的问题:
blah = ['a', 'b', 'c']
blah[:-3] # []
blah[:-2] # ['a']
blah[:-1] # ['a', 'b']
blah[:-0] # []
我始终想不通为什么 blah[:-0] # []
是这种情况,模式明显表明它应该是 ['a', 'b', 'c']
。有人能帮忙解释一下为什么会这样吗?我在文档中也没找到相关的说明。
今天在编写一些单元测试时,偶然遇到了一个有点令人困惑的问题:
blah = ['a', 'b', 'c']
blah[:-3] # []
blah[:-2] # ['a']
blah[:-1] # ['a', 'b']
blah[:-0] # []
我始终想不通为什么 blah[:-0] # []
是这种情况,模式明显表明它应该是 ['a', 'b', 'c']
。有人能帮忙解释一下为什么会这样吗?我在文档中也没找到相关的说明。
-0
是 0
,一个从 list
的开头(包含)到索引 0
(不包含)的切片是一个空白的 list
。
Python不会将-0
与0
区别对待。
blah[:0]
表示的是从第一个元素开始到但不包括第一个元素之前的所有元素。这是一个空列表,blah[:-0]
就是完全相同的结果。
你可以通过检查来测试它:
blah[0:]
[:-2]
返回包含最后两个元素的列表一样,[:-0]
返回包含最后0个元素的列表。 - krethika[:-2]
表示获取除了最后两个元素以外的所有元素,并返回一个列表。 - TigerhawkT3