请解释为什么str.index()计算两次相同的字母

时间:2017-06-01 03:19:56

标签: python python-3.x

我是python的新手。我想得到每个字母的索引(位置)。我假设每个字母都有自己的位置,但这段代码显示其他明智的。显然我没有正确地做到这一点。

使用此代码,您能解释为什么此str.index(l)会将同一个字母重复计算。我怎样才能正确获得每个字母的索引?所以"hello“将是0,1,2,3,4而不是0,1,2,2,4,如下所示:

>>> def a(str):
    for l in str:
       print(str.index(l))

>>> a('hello')
0
1
2
2
4
>>> 

3 个答案:

答案 0 :(得分:1)

Python的index函数返回列表中找到的对象(在您的情况下是一个字符)的最低索引(在您的情况下是一个字符串)。

如果你想获得每个字母的索引,你可能想要迭代它们的索引。

for i in range(len(str)):
    print(i)

答案 1 :(得分:0)

我没有编写python,但它表现得像indexOf它返回str中第一次出现的那个字母

你写的内容被翻译为

in this str = "hello"

at this l = "h" that occurs at 0 index,
e = 1
l = 2
l = 2, because of the first occurrence left to right
o = 4

查看我能看到的文档..它可以这样写:

def a(str):
  for l in range(len(str)):
      print(l)

a('hello')

答案 2 :(得分:0)

str.index()使用FAST_SEARCH算法。

FAST_SEARCH遍历字符串s,查找单个字符c的第一次出现。 str.index()使用您的全字符串s执行此操作,同时迭代它用于c的每个字符,一个接一个。

这是一个很好的链接,可以看到幕后发生的一些其他有趣的C内容:http://www.laurentluce.com/posts/python-string-objects-implementation/