gpt4 book ai didi

python-3.x - 列出拼接分配空间复杂度?

转载 作者:行者123 更新时间:2023-12-01 03:19:14 25 4
gpt4 key购买 nike

我相信python中的拼接列表总是会创建列表的浅拷贝。然而,这对于拼接分配仍然适用吗?

例如:

list[::10] = list[10:20]

list[::10] 是否创建一个新列表?如果我的理解是正确的, list[::10] 不使用任何空间,但 list[10:20] 通过创建新列表使用空间

最佳答案

使用 dis 我们可以看看 Python 解释器实际上将我们的代码解释成什么。

from dis import dis

dis('l[::10] = l[10:20]')

给我们
  1           0 LOAD_NAME                0 (l)
3 LOAD_CONST 0 (10)
6 LOAD_CONST 1 (20)
9 BUILD_SLICE 2
12 BINARY_SUBSCR
13 LOAD_NAME 0 (l)
16 LOAD_CONST 2 (None)
19 LOAD_CONST 2 (None)
22 LOAD_CONST 0 (10)
25 BUILD_SLICE 3
28 STORE_SUBSCR
29 LOAD_CONST 2 (None)
32 RETURN_VALUE

我们可以看到有两个 BUILD_SLICE 操作,一个用于 l[::10]另一个用于 l[10:20] .所以两个切片在内存中都由对象表示。

编辑:

值得注意的是,这是 CPython 3.5 的反汇编字节码

CPython 是“标准”实现,但其他 Python 实现/版本可能有所不同。

关于python-3.x - 列出拼接分配空间复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47128421/

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