sách gpt4 ăn đã đi

python — Hiệu suất của copy.copy so với copy.deepcopy trên bộ dữ liệu

In lại 作者:太空狗 更新时间:2023-10-30 00:57:14 35 4
mua khóa gpt4 giày nike

%python -m timeit -s "import copy" "x = (1, 2, 3)" "copy.deepcopy(x)"
100000 loops, best of 3: 10.1 usec per loop

%python -m timeit -s "import copy" "x = (1, 2, 3)" "copy.copy(x)"
1000000 loops, best of 3: 0.609 usec per loop

Tại sao deepcopy So sánh sao chép 慢 15 倍?

每个函数都必须遍历元组的元素。在该迭代期间,sao chép 为每个元素创建另一个引用; deepcopy 深度复制每个元素。

但每个元素都是一个số nguyên,而深度复制一个số nguyên 只是创建另一个对它的引用。换句话说,这两个函数似乎执行完全相同的步骤,相同的次数。

这里是验证过程中没有创建新实例:

ActivePython 3.2.1.2 (ActiveState Software Inc.) based on
Python 3.2.1 (default, Jul 18 2011, 14:31:09) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x = (1,2,3)
>>> import copy
>>> y = copy.copy(x)
>>> z = copy.deepcopy(x)
>>> x is y
ĐÚNG VẬY
>>> x is z
ĐÚNG VẬY
>>> x[1] is z[1]
ĐÚNG VẬY

câu trả lời hay nhất

元组是不可变的,但它们可以包含可变元素:

>>> a = (1, 2, [])
>>> a[2].append(1000)
>>> một
(1, 2, [1000])

请注意,元组不会改变:改变的是列表;元组仍然包含完全相同的列表。

deepcopy 应该递归复制那些可变元素。 sao chép 只是复制对它们的引用。

>>> from copy import copy, deepcopy

>>> a = (1, 2, [])
>>> c = copy(a)
>>> d = deepcopy(a)

>>> a[2].append(1000)

>>> c
(1, 2, [1000])
>>> ngày
(1, 2, [])

关于python - copy.copy 与 copy.deepcopy 在元组上的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10271132/

35 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress