LeetCode 88 list[:] = A 和list = A的区别

nums1 = [1, 2, 3, 0, 0, 0]
m = 3
nums2 = [2, 5, 6]
n = 3
nums1[:] = sorted(nums1[:m] + nums2[:n])

我们做2个实验:

print(id(nums1))
nums1 = nums1[:m] + nums2[:n]
print(id(nums1))

输出得到:

30630408
39478024

可见nums1的地址变了

如果换成

print(id(nums1))
nums1[:] = nums1[:m] + nums2[:n]
print(id(nums1))

6054408
6054408

地址不变

这是因为:

nums1 = A # 更改 nums1 这一变量名所指向的对象。让 nums1 变量指向 A 所指向的对象
nums1[:] = A # 对 nums1 指向的对象赋值。把 A 变量指向的对象的值逐个 copy 到 nums1 指向的对象中# 并覆盖 nums1 指向的对象的原来值。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页