有人能解释一下为什么我的Python列表索引对于不同的索引是相同的吗';s

有人能解释一下为什么我的Python列表索引对于不同的索引是相同的吗';s,python,arrays,string,uppercase,Python,Arrays,String,Uppercase,所以我现在正在学习代码战,并且已经研究这个问题一个多小时了。。。一项看似简单的任务让我花了很长时间才弄明白。不管怎么说,这就是我被打动的地方。 我想返回一个字符串数组的索引列表,但前提是该字符是大写的。这适用于不同的字母,但当两个相同字符出现时,它们返回相同的索引。例如,返回的“abCdeC”索引为[2],[2] def solution(s): arry = list(s) for x in arry: if x.isupper(): p

所以我现在正在学习代码战,并且已经研究这个问题一个多小时了。。。一项看似简单的任务让我花了很长时间才弄明白。不管怎么说,这就是我被打动的地方。 我想返回一个字符串数组的索引列表,但前提是该字符是大写的。这适用于不同的字母,但当两个相同字符出现时,它们返回相同的索引。例如,返回的“abCdeC”索引为[2],[2]

def solution(s):
    arry = list(s)
    for x in arry:
        if x.isupper():
            print(arry.index(x))
solution('breakCamelBamp')
print('  spacer  ')
solution('breakCamelCamp')

正如其他人所指出的,问题在于
index
总是返回第一次出现的索引。相反,请尝试使用当前索引进行迭代:

def solution(s):
    arry = list(s)
    for i, x in enumerate(arry):
        if x.isupper():
            print(i)

索引返回第一个匹配项。您可以改为使用计数器:

def solution(s):
    arry = list(s)
    count_array = []
    count = 0
    for x in arry:
        if x.isupper():
            count_array.append(count)
        count += 1
    print(count_array)

solution('breakCamelBamp')
print('  spacer  ')
solution('breakCamelCamp')

它查找x的第一个索引。请参阅方法
索引的文档。它返回第一次出现的索引。谢谢。我将查找一个不返回第一次出现的方法。@RonH86您不会找到一个自动返回“正确”索引的函数。您需要跟踪索引。感谢您的帮助,这就是我使其余解决方案正常工作所需的全部。