python - 字符串切片返回意外值
问题描述
我希望这是一个简单的问题!我正在尝试反转一个数字,并在“偶数”位置给出数字。当我尝试在一个字符串切片中执行此操作时,我只得到一个数字,即使我期待更多。当我把它分成两片时,我得到了正确的答案,但我不确定为什么。
例如,如果我有数字 512341234,我希望它给我 3131,因为我首先反转字符串 (432143215),然后取偶数位置数字 (4[3]2[1]4[3]2 [1]5)。
下面是我试图用来使其工作的代码,但将其作为一个切片仅返回单个数字,而将其作为两个切片则意味着它返回预期值。为什么是这样?
num = 512341234
str(num)[1::-2] #returns 1
str(num)[::-1][1::2] #returns 3131
谢谢!诺亚
解决方案
1::-2
表示从位置 1(第二个字符)开始,一次向后退两个字符。您想从字符串末尾附近的某个地方开始,例如
num = 512341234
str(num)[-1::-2]
'42425'
num = 512341234
str(num)[-2::-2]
'3131'
但是您必须选择-1
或-2
基于其中一个字符处于偶数位置(即基于字符串的长度)来执行此操作。