如何反转 Python 字符串而不省略开始和结束切片参数?
word = "hello"
reversed_word = word[::-1]
我知道这是可行的,但是如何通过指定开始和结束索引来获得结果?
word = "hello"
reversed_word = word[?:?:-1]
很难向学生解释为什么word[::-1]
反转字符串。如果我能给他们逻辑推理而不是“这是Pythonic方式”,那就更好了。
我解释的方式word[::1]
如下:“您没有指定开始,所以它只是从开始开始。您没有指定结束,所以它只是走到结束。现在步骤是1,所以它只是从开始到结束1个字符增 1。”现在当我的学生看到word[::-1]
他们会想“我们没有指定开始或结束,所以它会一次遍历字符串 -1 个字符?”
反转字符串的其他一些方法:
word = "hello"
reversed_word1 = word[-1: :-1]
reversed_word2 = word[len(word)-1: :-1]
reversed_word3 = word[:-len(word)-1 :-1]
关于切片符号你应该注意的一件事a[i:j:k]
就是它省略i
and j
并不总是意味着i
会变成0
and j
会变成len(s)
. 这取决于符号k https://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange。默认情况下k
is +1
.
- If
k
是 +ve 那么默认值i
is 0
(从头开始)。如果是 -ve 那么默认值i
is -1
(从末尾开始)。
- If
k
是 +ve 那么默认值j
is len(s)
(停在最后)。如果是 -ve 那么默认值j
is -(len(s)+1)
(停在开头)。
现在您可以向您的学生解释如何Hello[::-1]
prints olleH
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)