我有这个函数接收一个单词并列出每个大写字母的索引:
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"的其他匹配项的索引?什么时候迭代字符串?
答案 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