当有两个相同的字符时如何索引列表

时间:2018-09-14 15:42:17

标签: python python-3.x

我一直试图通过函数使字符串中的偶数字母变为大写而奇数字母变为小写,如下所示:

def myfunc('apple'):
    #OUTPUTS: 'ApPlE'

这就是我做的:

def myfunc(mystring):
    stringList = [letter for letter in mystring]
    for letter in stringList[1::2]:
        stringList[stringList.index(letter)] = letter.lower()
    for letter in stringList[::2]:
        stringList[stringList.index(letter)] = letter.upper()
    return ''.join(stringList)

我相信,当我使用“ apple”之类的词时,如果有两个相同的字母,则index()函数只能设法给我第一个“ p”的索引,前提是我的词是apple。 它返回:

'APplE'

我该如何解决?

1 个答案:

答案 0 :(得分:2)

方法list.index返回第一次出现的索引,使其不适合恢复当前元素的索引。相反,您应该使用enumerate,这将使您可以通过单个列表理解来获得预期的结果。

def myFunc(s):
    return ''.join([c.lower() if i % 2 else c.upper() for i, c in enumerate(s)])

print(myFunc('apple')) # ApPlE