当前位置: 首页 > 面试题库 >

字符串是否在Python中合并?

岳永思
2023-03-14
问题内容

Python是否有所有字符串的池,并且在那里它们(字符串)单例?

更准确地说,在下面的代码中,是在内存中创建一个还是两个字符串?

a = str(num)
b = str(num)

问题答案:

字符串在Python中是不可变的,因此实现可以决定是否进行内部(这通常与C#相关联,这意味着某些字符串存储在池中)这个字符串。

在您的示例中,您正在动态创建字符串。CPython并不 总是 查看池以检测字符串是否已经存在-
这也没有意义,因为您首先必须保留内存以创建字符串,然后将其与池内容进行比较(长期效率低下)字符串)。

但是对于长度为1的字符串,CPython确实会查询池(参见“ stringobject.c”):

static PyStringObject *characters[UCHAR_MAX + 1];

...

PyObject *
PyString_FromStringAndSize(const char *str, Py_ssize_t size)
{

...

    if (size == 1 && str != NULL &&
    (op = characters[*str & UCHAR_MAX]) != NULL)
    {
        #ifdef COUNT_ALLOCS
            one_strings++;
        #endif

        Py_INCREF(op);
        return (PyObject *)op;
    }

...

所以:

a = str(num)
b = str(num)
print a is b # <-- this will print False in most cases (but try str(1) is str(1))

但是,当直接在代码中使用 常量 字符串时,CPython使用相同的字符串实例

a = "text"
b = "text"
print a is b # <-- this will print True


 类似资料:
  • 问题内容: 我正在使用Python v2,并且试图找出是否可以判断字符串中是否包含单词。 我发现了一些有关识别单词是否在字符串中的信息-使用.find,但是有一种方法可以执行IF语句。我想要以下内容: 谢谢你的帮助。 问题答案: 出什么问题了:

  • 问题内容: 如何检查是否是那里的? 我想分配给是否有结果,否则。 我当前的代码是: 问题答案:

  • 本文向大家介绍检查字符串在Python中是否有效JSON,包括了检查字符串在Python中是否有效JSON的使用技巧和注意事项,需要的朋友参考一下 JSON是一种文本格式,用于在各种计算机程序之间轻松交换数据。它具有Python可以验证的特定格式。在本文中,我们将考虑一个字符串,并使用JSON模块验证该字符串是否表示有效的JSON格式。 创建JSON对象 json模块具有称为load的方法。它加载

  • 问题内容: 如何检查数组中的任何字符串是否在另一个字符串中? 喜欢: 该代码行不通,只是为了展示我想要实现的目标。 问题答案: 你可以使用: 同样,要检查是否找到了列表中的所有字符串,请使用all代替any。

  • 问题内容: 在python中,是否有内置的方法对字符串执行readline()?我有大量的数据,只想剥离前几行而对整个字符串不做split()。 假设的例子: 我希望这导致: 我知道编写一个可以做到这一点的类非常容易,但是我正在寻找内置的东西。 编辑:Python v2.7 问题答案: Python 2 您可以使用StringIO: 如果性能很重要,请确保使用cStringIO。 Python 3

  • 问题内容: 我之前已经找到了这个问题的一些答案,但是对于当前的Python版本似乎已经过时了(或者至少它们对我不起作用)。 我想检查子字符串是否包含在字符串列表中。我只需要布尔结果。 我找到了这个解决方案: 我希望从这段代码中得到一个价值。如果单词是“ der”,则输出应为。 但是,结果是一个生成器函数,我找不到找到该值的方法。 任何想法? 问题答案: 您可以导入从的情况下,它是由一些其他的替代: