我有以下代码:
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
,在某些情况下我需要加一个,而在另一些情况下我不需要呢?
谢谢
答案 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,它应该可以工作