Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反向字符串Python切片表示法_Python_Python 2.7_Slice - Fatal编程技术网

反向字符串Python切片表示法

反向字符串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和

我惊讶地发现在python中反转字符串是多么容易,但后来我突然发现了这一点,并迷失了方向。有人能解释一下为什么第二个反转不起作用吗?

第二个字符串为空的原因是,您告诉编译器每次从0开始,从6结束,从-1步开始

由于编译器通过反复将-1和0相加(它变为0,-1,-2,-3,…)永远不会得到大于6的数字,因此编译器被编程为返回空字符串

请尝试
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 ?