首页 > 解决方案 > 字符串切片返回意外值

问题描述

我希望这是一个简单的问题!我正在尝试反转一个数字,并在“偶数”位置给出数字。当我尝试在一个字符串切片中执行此操作时,我只得到一个数字,即使我期待更多。当我把它分成两片时,我得到了正确的答案,但我不确定为什么。

例如,如果我有数字 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

谢谢!诺亚

标签: pythonslice

解决方案


1::-2表示从位置 1(第二个字符)开始,一次向后退两个字符。您想从字符串末尾附近的某个地方开始,例如

num = 512341234
str(num)[-1::-2]
'42425'
num = 512341234
str(num)[-2::-2]
'3131'

但是您必须选择-1-2基于其中一个字符处于偶数位置(即基于字符串的长度)来执行此操作。


推荐阅读