|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lzb1001 于 2023-5-4 11:19 编辑
小甲鱼教材和视频举例:
>>> list1 = [1, 3, 2, 9, 7, 8] # list1是原列表
>>> list2 = list1[:] # list2是使用分片方式得到的拷贝
>>> list2
[1, 3, 2, 9, 7, 8]
>>> list3 = list1 # list3是使用赋值方式得到的结果
>>> list3
[1, 3, 2, 9, 7, 8]
上面list1、list2、list3看起来好像一样,利用列表sort()方法做下排序修改后再来对比看看:
>>> list1.sort()
>>> list1
[1, 2, 3, 7, 8, 9] # 原列表list1已按从小到大顺序排列!
>>> list2
[1, 3, 2, 9, 7, 8] # 使用分片方式得到的拷贝list2保持不变!
>>> list3
[1, 2, 3, 7, 8, 9] # 使用赋值方式得到的结果list3会跟着变!
课后习题:
1.>>> old = [1, 2, 3, 4, 5]
2.>>> new = old
3.>>> old = [6]
4.>>> print(new)
按小甲鱼小甲鱼教材和视频举例,使用赋值方式获得的结果会随着一起发生改变,所以我的答案是[6]
没想到答案竟然是[1, 2, 3, 4, 5]
请大神讲解。
抱歉,我将尝试以更简单的方式解释这个问题。
首先,当我们在Python中创建一个列表并将其赋值给一个变量时,例如 old = [1, 2, 3, 4, 5] ,这个变量 old 实际上是一个指向列表的引用(或者说指针),而不是列表本身。
当我们使用 new = old 时,我们让 new 变量也指向了 old 所指向的那个列表。现在, old 和 new 都指向同一个列表。
接下来,当我们创建一个新的列表 old = [6] 时,我们实际上是创建了一个全新的列表,并让 old 指向这个新列表。这个操作并没有改变原来的列表(即 [1, 2, 3, 4, 5] ),而只是改变了 old 的指向。 new 仍然指向原来的那个列表,即 [1, 2, 3, 4, 5] 。
所以,当我们打印 new 时,输出的结果是 [1, 2, 3, 4, 5] 。这是因为我们并没有修改 old 原来指向的列表,而只是让 old 指向了一个全新的列表。希望这次解释更容易理解。
|
|