为什么我不能使用一个步骤来更改Python列表中的项目?

时间:2019-05-18 00:36:07

标签: python

因此,我仍处于学习Python的初期阶段,并为此进行整体编码。

我的问题是为什么我不能使用如下步骤更改Python列表中的项目:

def myfunc2(string):
    new = list(string)
    new[0::2] = new[0::2].upper()
    new[1::2] = new[1::2].lower()

    return '' .join(new)

 myfunc2('HelloWorld')

我希望每隔一个字母将大写和小写开始,从索引0开始。

我已经看到另一个用户发布的解决方案,尽管该其他解决方案有效,但我在理解代码方面还是遇到了麻烦。因此,出于好奇,我试图自己设计出逻辑,并提出了上面的代码。

为什么这不起作用?

1 个答案:

答案 0 :(得分:2)

new[0::2]返回一个列表,该列表没有upper方法。 new[1::2]lower也是如此。

您可以使用map实现目标:

def myfunc2(string):
    new = list(string)
    new[0::2] = map(str.upper, new[0::2])
    new[1::2] = map(str.lower, new[1::2])
    return '' .join(new)

print(myfunc2('HelloWorld'))
# HeLlOwOrLd