gpt4 book ai didi

python - 克服字符串不可变性的 "disadvantages"

转载 作者:太空狗 更新时间:2023-10-29 22:14:26 26 4
gpt4 key购买 nike

我想更改特定字符串索引的值,但不幸的是

string[4] = "a"

引发 TypeError,因为字符串是不可变的(“不支持项目分配”)。

所以我改用了相当笨拙的

string = string[:4] + "a" + string[4:]

有更好的方法吗?

最佳答案

Python 中的字符串是不可变的,就像数字和元组一样。这意味着您可以创建它们、移动它们,但不能更改它们。为什么会这样?出于几个原因(你可以在网上找到更好的讨论):

  • 按照设计,Python 中的字符串被认为是基本的且不可更改的。这会激发出更好、更安全的编程风格。
  • 字符串的不变性具有效率优势,主要体现在存储需求较低方面。
  • 它还使字符串更安全地用作字典键

如果您稍微浏览一下 Python 网络,您会注意到“如何更改我的字符串”的最常见建议是“设计您的代码,这样您就不必更改它”。很公平,但还有哪些其他选择?这里有一些:

  • name = name[:2] + ‘G’ + name[3:] - 这是一种低效的工作方式。 Python 的切片语义确保这在所有情况下都能正常工作(只要您的索引在范围内),但涉及多个字符串副本和连接,这不是您高效代码的最佳选择。尽管如果您不关心(而且很可能您不关心),这是一个可靠的解决方案。
  • 使用模块 UserString 中的 MutableString 类。虽然不比以前的方法更有效(它在幕后执行相同的技巧),但它在句法上与正常的字符串用法更一致。
  • 使用列表而不是字符串来存储可变数据。使用列表和连接来回转换。根据您的实际需要,ord 和 chr 也可能有用。
  • 使用数组对象。如果您使用字符串来保存受限数据(例如“二进制”字节)并希望快速编码,这可能是您的最佳选择。

抄袭自my own page关于 Python 的见解:-)

关于python - 克服字符串不可变性的 "disadvantages",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2193705/

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