Vas*_*asu 5 python string string-length slice
在查看一些python字符串和函数时,我发现了这个奇怪的python怪癖:
s = "hello"
print s[::-1]
Run Code Online (Sandbox Code Playgroud)
然后打印: olleh
但是,print s[len(s)-1:-1:-1]不起作用.我的理解是它应该从最后一个元素迭代s[len(s)-1]到第一个元素s[0].但是,它只打印一个空字符串'',我相信这是因为在一些给定长度的字符串中(比如5)s[4] == s[-1],. 但是,我不明白为什么python决定使用-1而不是4实际的len(s).
此外,s[len(s):0:-1] + s[0]工作.为什么是len(s)有效的索引?python是否只是len(s)任意转换为0?
PS这是在Python 2.7.8中,我不确定它是否也适用于3.xx
编辑:确认在Python 3中是相同的
切片表示法是这样的:
s[start:stop:step]
Run Code Online (Sandbox Code Playgroud)
特别stop是,达到但不包括它.把它翻译成你要问的:
s[len(s)-1:-1:-1]
Run Code Online (Sandbox Code Playgroud)
这是基于5的长度 'hello'
s[4:-1:-1]
Run Code Online (Sandbox Code Playgroud)
要么
s[4:4:-1]
Run Code Online (Sandbox Code Playgroud)
这是一个空的或零长度的字符串.
我在这里对切片表示法进行了更深入的阐述:解释Python的切片表示法