反向字符串Python切片表示法
我惊讶地发现在python中反转字符串是多么容易,但后来我突然发现了这一点,并迷失了方向。有人能解释一下为什么第二个反转不起作用吗?第二个字符串为空的原因是,您告诉编译器每次从0开始,从6结束,从-1步开始 由于编译器通过反复将-1和0相加(它变为0,-1,-2,-3,…)永远不会得到大于6的数字,因此编译器被编程为返回空字符串 请尝试反向字符串Python切片表示法,python,python-2.7,slice,Python,Python 2.7,Slice,我惊讶地发现在python中反转字符串是多么容易,但后来我突然发现了这一点,并迷失了方向。有人能解释一下为什么第二个反转不起作用吗?第二个字符串为空的原因是,您告诉编译器每次从0开始,从6结束,从-1步开始 由于编译器通过反复将-1和0相加(它变为0,-1,-2,-3,…)永远不会得到大于6的数字,因此编译器被编程为返回空字符串 请尝试string[6::-1],这将起作用,因为重复将-1添加到6将得到-1(超过字符串的末尾) 注:这是一个答案,主要是@dmcdougall、@Ben_Love和
string[6::-1]
,这将起作用,因为重复将-1添加到6将得到-1(超过字符串的末尾)
注:这是一个答案,主要是@dmcdougall、@Ben_Love和@Sundeep评论的汇编,还有一些解释切片表示法的编写如下:
列表\u名称[开始\u索引:结束\u索引:步骤\u值]
python中的列表索引与数字行中的数字不同。当step\u值
为-1
时,列表索引不会转到-1st
之后的0th
索引
因此产生了以下结果
>打印字符串[0:6:-1]
>>>
及
>打印字符串[0::-1]
>>H
因此,当开始索引
为0时,它不能按循环顺序遍历索引到-1、-2、-3、-4、-5、-6,因为步进值
为-1
同样地
>打印字符串[-1:-6:-1]
>>OLLEH
及
>打印字符串[-1::-1]
>>OLLEH
也
因此,当start\u索引
为-1时,它以循环顺序遍历索引到-1、-2、-3、-4、-5、-6,以给出输出OLLEH
当start\u index
为6,而step\u value
为-1时,理解起来非常简单
>打印字符串[6::-1]
>>>OLLEH
你看过文档了吗?我想你也想反转索引。有关更多详细信息,请参阅python In[14]:s='HELLO'In[15]:s[6:0:-1]Out[15]:'OLLE'
是的,我听不懂,因此这里问是否有人可以用更简单的术语解释。我只把字符串[begin:end:step]
弄清楚了,根据这一点,这应该是有效的吗?就像@dmcdougall所说的,也许你需要反转索引。您告诉解释器从索引0开始,然后返回(超过)结尾,但要向后。在第一个索引之前没有任何内容。另请参见:。。。我认为可以显式地使用字符串[4::-1]
,但不显式地指定结束值。。
string = "HELLO"
print string[::-1] #as expected
print string[0:6:-1] #empty string why ?