Python 使用显式索引写入s[:-1]
我无法编写Python 使用显式索引写入s[:-1],python,python-3.x,Python,Python 3.x,我无法编写s[:-1]来使用显式索引反转字符串s。我想写s[a:b:-1],但我不知道写a和b要写什么。这是一个代码示例,它应该生成fedcba: s = 'abcdef' s[::-1] 从文件中: 切片索引具有有用的默认值;省略的第一个索引默认为 zero,省略的第二个索引默认为所选字符串的大小 切片的 我想写s[a:b:-1],但我不知道a和b应该写什么 好了: >>> s = 'abcdef' >>> a = len(s) - 1 >>
s[:-1]
来使用显式索引反转字符串s
。我想写s[a:b:-1]
,但我不知道写a
和b
要写什么。这是一个代码示例,它应该生成fedcba
:
s = 'abcdef'
s[::-1]
从文件中:
切片索引具有有用的默认值;省略的第一个索引默认为
zero,省略的第二个索引默认为所选字符串的大小
切片的
我想写s[a:b:-1],但我不知道a和b应该写什么
好了:
>>> s = 'abcdef'
>>> a = len(s) - 1
>>> b = -len(s) - 1
>>> s[a:b:-1]
'fedcba'
这应该可以做到
s[len(s)::-1]
如果您真的想填充所有3个占位符,您可以这样做
s[len(s):None:-1]
编辑:正如@deceze所建议的,这也适用
s[None:None:-1]
以下是适用于a和b的值:
lst = list('abcd')
a = b = None
print (lst[a:b:-1]) # returns ['d', 'c', 'b', 'a']
a = len(lst)
b = 0 - len(lst) - 1 # b = -5
print (lst[a:b:-1]) # returns ['d', 'c', 'b', 'a']
我不明白你在问什么。你为什么“不能”写
s[::-1]
?您可以编写它并生成您想要的输出。@mkrieger1我可以-我只是想了解如何使用显式索引编写它。这是一个有效的问题-我应该能够使用s[a:b:-1]
来写这个问题,其中a,b是一些表达式。s[len(s):None:-1]
似乎有效这里还有一个还没有列出的问题:s[-1:-len(s)-1:-1]
,尽管s[None:None:-1]
可能更具可读性。我认为这可以归结为一个问题:它本质上是问“为什么使用-1作为stop
value不能按预期工作”。或者:在a
占位符中提供显式值,但在b
占位符中不提供显式值;OP两者都想要。如果你解释一下你提供的代码是如何回答这个问题的,这将是一个更好的答案。None
一开始也可以……好吧,这就是当你将它留空时会发生的情况,它变为None
,Python处理它。所以我认为这仍然不是一个答案。@Asocia如果问题是找到a,b,c
的值,用s[a:b:c]
复制s[:-1]
的行为,那么None
肯定是一个有效的解决方案。此外,省略的索引默认为零或字符串的大小,至少如问题中所述。@deceze那么为什么@Pani回答了s[len(s):None:-1]
,而不是s[None:None:-1]
?他们试图找到a
,len(s)
是a
的有效值,试图找到b
,但找不到None
。暴露明显的,无
,不应被视为答案。