为什么通过分片进行此访问有效但不起作用?

时间:2019-05-07 10:31:32

标签: python python-3.x

我有以下代码:

my_name = 'Tlaloc-ES'

我正在尝试切片,第一个尝试是与此的字谜

my_name[-1:-(len(my_name)+1):-1]

那个回报:

  

'SE-colalT'

然后位置-(len(my_name)+1)用于'T',但是当尝试使用下一个切片时:

my_name[-(len(my_name)+1)]这将返回错误:

  

字符串索引超出范围

但没有my_name[-(len(my_name))],则返回T

答案是为什么为什么要得到T,在某些情况下我需要加一个,而在另一些情况下我不需要呢?

谢谢

2 个答案:

答案 0 :(得分:1)

-(len(my_name)+1)将关闭1

string = 'word'
len(string) => 4
string[-len(string)] = 'w'
-(len(string)+1) => -5

您无法在本机python中索引越过边界
第一行起作用的原因是因为端点可能在边界之外,并且迭代器在到达终点时会停止

答案 1 :(得分:1)

原因是您创建的切片(-1:-(len(...)从-1到-10生成了一个生成器,从技术上讲,这是从-1到-9的数字(不包括-10)。因此,将其用作索引选项(len(my_name) + 1)意味着其长度超出my_name。删除+1,它应该可以工作