如何使用显式的“s片从i到j,步进k”反转字符串?

2024-09-28 03:22:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看到::-1可以用来反转字符串,但是我认为找到能够完成这项工作的显式整数i:j:k会很有意义。你知道吗

我找到了文档common-sequence-operations,但无法使用它。这个代码测试的缺点是:

s = "abcd"
print(1,s[4:3:-1]) 
print(2,s[4:2:-1])    
print(3,s[4:1:-1])
print(4,s[4:0:-1])
print(5,s[4:-1:-1])  

以下是输出:

1 
2 d
3 dc
4 dcb
5 

看起来用显式公式s[i:j:k]做不到这一点。你知道吗

通常我可以通过试错法来解决简单的编程问题,但这在这里是行不通的。也许仔细阅读一下文档会让我克服这个困难!你知道吗


Tags: 字符串代码文档编程整数commondc公式
1条回答
网友
1楼 · 发布于 2024-09-28 03:22:47

你必须这样做:

s = "abcd"
print(s[len(s):-len(s)-1:-1])

或者,正如Terry Jan Reedy在注释中指出的,下面的编写方式很好地说明了片的长度为(stop - start) / step

print(s[-1:-1-len(s):-1])

问题是,负索引从后面开始,因此负索引对应以下“真实”索引:

-1 ->  3
-2 ->  2
-3 ->  1
-4 ->  0  # -len(s)
-5 -> -1  # that's the one you need (or any smaller number)

0-len(s)是不够的,因为切片的stop索引是独占的,所以必须取一个较低的索引。你知道吗

相关问题 更多 >

    热门问题