为什么Python的切片符号来自[m,n-1]?

时间:2014-04-14 04:20:41

标签: python

让我先说一下我是Python的新手,来自Ruby,而且我对Python的工作方式没有太多具体的了解。

对于我目前的一个项目,我正在计算化学Django应用程序中创建一个新功能,该应用程序读入PDB然后对它们进行计算。添加我的代码后,我收到一条错误,Python无法将string作为float进行类型转换,并查看了解析PDB的库。

我很快就对Python的切片符号的工作原理感到困惑。例如:

str = 'Hello this is Josh'
str[0:2] #=> 'He'
str[2] #=> 'l'

我认为调用str[0:2]会导致Hel,而不是He,因为索引02是3大。

是否有这种情况发生的原因,以及为什么str[m:n]m提供给n-1,而不是从m提供给n

1 个答案:

答案 0 :(得分:6)

就是这样:

str[0:2] + str[2:4] == str[0:4]

str[0:len(str)] == str

一般情况下,通过这种方式定义数字组是常规的;包括第一个列出的数字,不包括第二个。

Esdgar Dijkstra为这个约定写了a fairly well known argument,并且在0处开始了数组索引的约定。