gpt4 book ai didi

python - 当有 2 个相同的字符时如何索引列表

转载 作者:行者123 更新时间:2023-11-28 20:57:48 25 4
gpt4 key购买 nike

我一直在尝试使用函数使字符串中的偶数字母变为大写,奇数字母变为小写,如下所示:

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”这样有两个相同字母的词时,如果我的词是 apple,index() 函数只能设法给我第一个“p”的索引。它返回:

'APplE'

我该如何解决这个问题?

最佳答案

通过使用内置函数 enumerate 遍历字符串的索引, 连同字符串的字符(字符串也是可迭代的):

def myfunc(mystring):
out = []
for i, c in enumerate(mystring):
if i % 2 == 0:
out.append(c.upper())
else:
out.append(c.lower())
return "".join(out)

示例输出:

>>> myfunc('apple')
'ApPlE'

这也更有效,因为它只遍历字符串一次。您的代码重复多次(每个 stringList.index 调用都会对字母进行线性搜索)。

如果你想让它更难阅读,但又想重复使用你已有的东西,你也可以使用它,但我不推荐它(因为它在字符串上迭代三次,一次构建列表,然后两次替换字符):

def myfunc(mystring):
stringList = list(mystring)
stringList[::2] = map(str.upper, stringList[::2])
stringList[1::2] = map(str.lower, stringList[1::2])
return "".join(stringList)

关于python - 当有 2 个相同的字符时如何索引列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52335276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com