gpt4 book ai didi

python - python中split()函数的空间复杂度

转载 作者:行者123 更新时间:2023-12-02 07:16:09 24 4
gpt4 key购买 nike

我有一个问题,以下代码是否就地执行或具有额外的空间复杂度。鉴于该句子最初是一个字符串。感谢您的帮助

sentence = "hello world"

sentence=sentence.split()

最佳答案

在Python中,字符串是不可变的对象,这意味着它们根本无法“就地”更改。对它们的所有操作本质上都会占用新的内存空间,并且希望 Python 的垃圾收集过程会删除旧的未使用的内存空间(如果不再有对这些对象的引用)。亲自查看它的一种方法是:

>>> a = 'hello world'
>>> id(a)
1838856511920
>>> b = a
>>> id(b)
1838856511920
>>> a += '!'
>>> id(a)
1838856512944
>>> id(b)
1838856511920

正如你所看到的,当ba引用相同的底层对象时,它们在内存中的id是相同的,但是一旦其中一个发生变化,它现在就有一个新的id - 内存中的一个新空间。保持不变的对象 (b) 仍然具有相同的地点 ID。

要在您的示例中检查它:

>>> sentence = "hello world"
>>> id(sentence)
1838856521584
>>> sentence = sentence.split()
>>> id(sentence)
1838853280840

我们可以再次看到这些对象没有占用相同的内存。我们可以进一步探索它们占用了多少空间:

>>> import sys
>>> sentence = "hello world"
>>> sys.getsizeof(sentence)
60
>>> sentence = sentence.split()
>>> sys.getsizeof(sentence)
160

关于python - python中split()函数的空间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58503255/

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