Python中列表复制A=B和A=B[:]的区别

在Python中,A = B 和 A = B[:] 用于复制列表时,有细微但重要的区别。它们的主要区别在于是否创建了一个新的列表对象。

A = B

这种赋值方式并没有创建nums的一个新副本,而是将nums的引用赋给了temp。因此,temp和nums指向同一个列表对象。对temp的任何修改都会反映到nums上,反之亦然。

python 复制代码
num = [1, 2]
temp = nums
temp.append(3)
print(num)   # 输出: [1, 2, 3]
print(temp)  # 输出: [1, 2, 3]

在上面的例子中,由于temp和nums指向同一个列表,所以对temp的修改(如添加元素3)也会影响到nums。

A = B[:]

这种赋值方式使用了切片操作[:]来创建一个nums的浅拷贝。这意味着temp和nums是两个不同的列表对象,但它们包含相同的元素。因此,对temp的修改不会影响到nums,反之亦然。

python

python 复制代码
num = [1, 2]
temp = nums[:]
temp.append(3)
print(num)   # 输出: [1, 2]
print(temp)  # 输出: [1, 2, 3]

在这个例子中,temp是nums的一个新副本。因此对temp的修改(如添加元素3)不会影响到原始的nums列表。

相关推荐
lgily-12254 分钟前
常用的设计模式详解
java·后端·python·设计模式
真的想上岸啊18 分钟前
c语言第一个小游戏:贪吃蛇小游戏05
c语言·算法·链表
元亓亓亓42 分钟前
LeetCode热题100--206.反转链表--简单
算法·leetcode·链表
陈苏同学1 小时前
MPC控制器从入门到进阶(小车动态避障变道仿真 - Python)
人工智能·python·机器学习·数学建模·机器人·自动驾驶
诚丞成1 小时前
BFS算法篇——从晨曦到星辰,BFS算法在多源最短路径问题中的诗意航行(上)
java·算法·宽度优先
mahuifa1 小时前
python实现usb热插拔检测(linux)
linux·服务器·python
hongjianMa1 小时前
2024睿抗编程赛国赛-题解
算法·深度优先·图论·caip
czy87874751 小时前
两种常见的C语言实现64位无符号整数乘以64位无符号整数的实现方法
c语言·算法
MyhEhud1 小时前
kotlin @JvmStatic注解的作用和使用场景
开发语言·python·kotlin
想睡hhh2 小时前
c++进阶——哈希表的实现
开发语言·数据结构·c++·散列表·哈希