为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千巷猫影 2021-06-07 17:01:01
我想知道如果 Python 字符串是不可变的,那么为什么这段代码可以工作以及它是如何工作的。a = input()for i in a:    if i.isupper():        print(i.lower(), end='')    else:        print(i.upper(), end='')这会更改字符串中的字符。在我知道字符串是不可变的之前,我曾经将它转换为列表,然后更改它并将列表连接回字符串。现在我认为我当时写的所有代码都是毫无价值的努力。
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

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() 只返回字符串的副本。




查看完整回答
反对 回复 2021-06-09
?
倚天杖

TA贡献1828条经验 获得超3个赞

str.lower,str.upper和其他字符串操作返回副本。他们没有就地工作。您可以通过阅读文档自行检查;例如:


str.lower()


返回所有大小写字符转换为小写的字符串副本。


这里的副本意味着一个新字符串,而不是原地变异的旧字符串。您还可以通过在变异后打印字符串来进一步验证这一点:


x = 'HELLO'

y = x.lower()

print(x)  # 'HELLO'


查看完整回答
反对 回复 2021-06-09
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

它们是不可变的。例如


text = 'hello'

text.upper()

print(text) # hello

尽管您调用upper了该text变量,但它的值并没有改变。与可变的列表对比


lst = [1,2,3]

lst.append(4)

print(lst) # [1,2,3,4]


查看完整回答
反对 回复 2021-06-09
  • 3 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号