微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Python 中击败字符串实习的最简单方法

如何解决在 Python 中击败字符串实习的最简单方法

我有一个案例,我想打败字符串实习。

假设我拥有的字符串是 "foo bar"

我知道一些破解字符串的笨拙/不明显的方法。所有都涉及在运行时计算表达式。

In [1]: my_str = "foo bar"
In [2]: my_new_str1 = " ".join(["foo","bar"])
In [3]: my_new_str2 = "foo bar "[:-1]
In [4]: my_new_str3 = "foo " + "bar"

In [5]: id(my_str)
Out[5]: 4483028144

In [6]: id(my_new_str1)
Out[6]: 4483030192

In [7]: id(my_new_str2)
Out[7]: 4484125872

In [8]: id(my_new_str3)
Out[8]: 4484052336

一个内置函数 sys.intern,它可以插入一个字符串。我希望做完全相反的事情,以简单/描述性的方式实习。

有没有什么东西可以以“干净”的方式打败字符串实习?

解决方法

我想在 join 周围放一个函数:

def new_str(s):
    return ''.join(s)

>>> s='a string'

>>> s1=new_str(s)

>>> id(s)
4568404208

>>> id(s1)
4569455664

>>> s is s1
False

但我认为这很愚蠢...

,

您也可以子类化 str

>>> class UninternedStr(str):
...   pass
... 
>>> s = UninternedStr('a string')
>>> s1 = UninternedStr('a string')
>>> s is s1
False

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?