Python 字符串 - 字符串的不变性

我想知道如果 Python 字符串是不可变的,那么为什么这段代码可以工作以及它是如何工作的。


a = input()

for i in a:

    if i.isupper():

        print(i.lower(), end='')

    else:

        print(i.upper(), end='')

这会更改字符串中的字符。在我知道字符串是不可变的之前,我曾经将它转换为列表,然后更改它并将列表连接回字符串。现在我认为我当时写的所有代码都是毫无价值的努力。


千巷猫影
浏览 327回答 3
3回答

小唯快跑啊

Python 中的字符串是不可变的,这意味着一旦将字符串变量分配给字符串(例如a ='Hello'),与列表对象不同,字符串的内容不能更改。在上面的代码中,您正在以某种方式转换字符串而不是更改字符串变量的内容。a=input()for i in a:    if i.isupper():        print (i.lower(),end='')    else:    print (i.upper(),end='')print(a)如果您运行此代码,您将看到 a 的值与您输入的值相同。字符串方法 lower() 和 upper() 只返回字符串的副本。

倚天杖

str.lower,str.upper和其他字符串操作返回副本。他们没有就地工作。您可以通过阅读文档自行检查;例如:str.lower()返回所有大小写字符转换为小写的字符串副本。这里的副本意味着一个新字符串,而不是原地变异的旧字符串。您还可以通过在变异后打印字符串来进一步验证这一点:x = 'HELLO'y = x.lower()print(x)  # 'HELLO'

小怪兽爱吃肉

它们是不可变的。例如text = 'hello'text.upper()print(text) # hello尽管您调用upper了该text变量,但它的值并没有改变。与可变的列表对比lst = [1,2,3]lst.append(4)print(lst) # [1,2,3,4]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python