如何正确索引字符串中不同位置的相同字符?Python代码问题
问题原因
你这段代码的问题出在word.index(i)上,这个方法只会返回字符i在字符串中第一次出现的索引。当字符串里有重复的大写字母(比如示例里的第二个A),它不会返回当前遍历到的位置,而是直接取第一次出现的索引0,所以结果不符合预期。
解决方法
改用enumerate()函数遍历字符串,它能同时返回当前字符的索引和字符本身,这样就能直接把正确的索引加入列表:
def capitals(word): arr = [] for idx, char in enumerate(word): if char.isupper(): arr.append(idx) return arr
也可以用更简洁的列表推导式实现:
def capitals(word): return [idx for idx, char in enumerate(word) if char.isupper()]
测试示例字符串「AbcDeFgAiJ」,两种写法都会返回预期结果[0, 3, 5, 7, 9]。
内容的提问来源于stack exchange,提问作者lyon98.dbios
相关产品推荐
相关产品推荐

