使用 word[1:2] 而不是 word[1]?

oct*_*tag 4 python string slice

我在 Python 教科书中遇到过一个用于word[1:2]对字符串进行切片的示例。这样做是为了证明字符串中只有一个字母会被切片。

这让我开始思考 - 有没有一个用例可以使用word[1:2]而不是 just word[1],它返回相同的结果?

wim*_*wim 5

不成文的规则是切片将返回一个子序列,而订阅将返回一个元素。碰巧的是,对于长度为 1 的字符串,这些概念是相等的。但是有一个微妙的 API 区别:切片字符串不能抛出IndexError

>>> s = "x"
>>> s[1:2]
''
>>> s[1]
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)

在极少数情况下,当您想要进行检查并避免出现未处理异常的可能性时,这会很方便/有用。

也许这里还值得一提:字节串有一个更显着的区别,对于它,切片再次返回子串,但订阅返回序数

>>> b'xyz'[1]
121
>>> b'xyz'[1:2]
b'y'
Run Code Online (Sandbox Code Playgroud)