【问题标题】:Why do I need to assign this variable after call of function? [duplicate]为什么我需要在调用函数后分配这个变量? [复制]
【发布时间】:2020-01-24 20:48:58
【问题描述】:

我有以下列表,我尝试使用此代码将键的所有第一个字符更改为大写:

listOfNames = {
    'tim':1,
    'frank':1
}

for name in listOfNames.keys():
    name = name.capitalize()
    print(name)

我注意到,当我省略变量 name 的赋值时,如下所示:

for name in listOfNames.keys():
    name.capitalize()
    print(name)

它打印出所有的键而不改变它们。现在,如果我理解正确,name 只是密钥的副本。但是我在那个副本上运行capitalize 方法。为什么我省略name = name.capitalize()时它不返回大写的键?

【问题讨论】:

  • name.capitalize() 返回一个新字符串,它不会改变原来的字符串。
  • 如果您只是学习基础知识,您可能应该忽略 Python 2,而将时间花在当前推荐和支持的语言版本上,即 Python 3。
  • 为了替换密钥,您应该删除旧密钥并创建一个新密钥。

标签: python python-2.7 methods variable-assignment


【解决方案1】:

因为字符串是不可变的,它们不能就地改变,所以调用:

name.capitalize()  #  or any other method

返回一个新字符串而不是就地修改name,为了实现你想要的,你可以使用dict理解:

listOfNames = {
    k.capitalize() : v for k, v in listOfNames.items()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 2020-11-15
    • 2020-07-06
    相关资源
    最近更新 更多