>> y = s[::] >>> id(s) 4507906480 >>> id(y) 4507906480 # they are -6ren">
gpt4 book ai didi

python - 切片操作是否总是分配一个新对象?

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:18 25 4
gpt4 key购买 nike

我对切片操作很困惑。

>>> s = "hello world"
>>> y = s[::]
>>> id(s)
4507906480
>>> id(y)
4507906480 # they are the same - no new object was created

>>> z = s[:2]
>>> z
'he'
>>> id(z)
4507835488 # z is a new object

切片操作遵循什么分配规则?

最佳答案

对于大多数内置类型,切片始终是一个浅拷贝……从某种意义上说,修改副本不会修改原始数据。这意味着对于不可变类型,对象算作自身的副本。 copy module也使用了“复制”这个概念:

>>> t = (1, 2, 3)
>>> copy.copy(t) is t
True

对象可以自由使用它们选择的任何分配策略,只要它们实现了它们记录的语义。 y可以和s是同一个对象,但是z不能,因为sz 存储不同的值。

关于python - 切片操作是否总是分配一个新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50338278/

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