如何获取字符串中同一字符多次出现的索引?

时间:2015-08-09 20:39:28

标签: python regex string

我有这个函数接收一个单词并列出每个大写字母的索引:

def capitals(word):
    print word
    lst = []
    for i in word:
        if i.isupper():
            lst += [word.index(i)]
    return lst

当单词中的所有大写字母不同时,它运行正常。例如:

  

首都(" AuIkkdjsiP")返回[0,2,9]

但是,如果字符串有重复的大写字母,则会发生这种情况:

  

首都(" AuAskdjfIsjUsdhA")返回[0,0,10,0]

如何获取char" A"的其他匹配项的索引?什么时候迭代字符串?

1 个答案:

答案 0 :(得分:4)

您希望enumerate处理重复字符,您还可以使用list comprehension

def capitals(word):
    return [i for i, ch in enumerate(word) if ch.isupper()]

ch是单词中的每个字符,i是字符的索引。

另外需要注意的是,如果你想将一个项目添加到列表中,你应该追加+=,如果你有多个要添加的元素,那么+=/extend是有意义的,但对于单个元素只是追加:

def capitals(word):
    print word
    lst = []
    for i,ch in enumerate(word):
        if ch.isupper():
            lst.append(i)
    return lst