让我先说一下我是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
,因为索引0
到2
是3大。
是否有这种情况发生的原因,以及为什么str[m:n]
从m
提供给n-1
,而不是从m
提供给n
?
答案 0 :(得分:6)
就是这样:
str[0:2] + str[2:4] == str[0:4]
和
str[0:len(str)] == str
一般情况下,通过这种方式定义数字组是常规的;包括第一个列出的数字,不包括第二个。
Esdgar Dijkstra为这个约定写了a fairly well known argument,并且在0处开始了数组索引的约定。