鱼C论坛

 找回密码
 立即注册
查看: 2224|回复: 11

两种赋值方法清空的问题

[复制链接]
发表于 2020-2-11 18:54:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问各位鱼油:
1. 之前课程讲过说:列表中赋值方式有两种:一种是list 1 = list[ : ]  还有一种是list 1 = list,这两种的区别在于一个是拷贝 一个是复制,第一种是拷贝,这就代表list1不随list的改变而改变,而第二种是随着list的改变而改变。这里想请问一下---我敲了如下代码:
list = [123,456,789]
list1 = list[:]
list2 = list
list=[]
敲了上边代码,再看list1 和list2的值没有发生改变,但是 要是list.sort(reverse=Ture)后,发现是会出现视频中的list2随之改变的情况,所以想请问:是否上述这种赋值方式只会在list有内置函数操作时出现错误,因为我看我自己敲的代码中list1 和list2 都是[123,456,789]没有变。
2. 在将字典这节课中,执行如下代码
a={‘姓名’}
b = a
a = {}
发现b还是没有随a在边,这跟上边的第一点不一样啊。
我现在看到字典时候有点糊涂,在第一点中说用=来进行赋值会随原来的函数而改变,但第二点钟说用“=”不会随原来的函数而改变。
求各位大佬解释一下~~~谢谢谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-11 18:58:06 | 显示全部楼层
1. 我这里并没有出现你所说的问题。

  1. >>> l1 = [1, 2, 3]
  2. >>> l2 = l1[:]
  3. >>> l3 = l2
  4. >>> l1 = []
  5. >>> l1.sort(reverse=True)
  6. >>> l2
  7. [1, 2, 3]
  8. >>> l3
  9. [1, 2, 3]
复制代码


2. a = {} 相当于将 a 标签贴在了另一个字典上,原来的 b 就和 a 没有任何关系了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-11 19:09:34 | 显示全部楼层
zltzlt 发表于 2020-2-11 18:58
1. 我这里并没有出现你所说的问题。

您的第三句话有问题,应该是13 = 11   您在看一下  是会出现问题的
关于第2点,我想多问一句,是不是a={}不表示将空的字典赋给a,a只代表一个标签,没有什么赋值不赋值的含义。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-11 19:10:41 | 显示全部楼层
wangzhenyu867 发表于 2020-2-11 19:09
您的第三句话有问题,应该是13 = 11   您在看一下  是会出现问题的
关于第2点,我想多问一句,是不是a={ ...

1. 不好意思,看错了
2. a = {} 就是将空字典赋值给 a 标签,只不过将 a 标签贴到了另外一个地方。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-11 19:13:00 | 显示全部楼层
再试了一遍,l2 和 l3 也没有改变

  1. >>> l1 = [1, 2, 3]
  2. >>> l2 = l1[:]
  3. >>> l3 = l1
  4. >>> l1 = []
  5. >>> l1.sort(reverse=True)
  6. >>> l2
  7. [1, 2, 3]
  8. >>> l3
  9. [1, 2, 3]
复制代码


原理一样,l1 = [] 是将 l1 标签贴到另外一个地方去了,它和 l2 与 l3 就没有关系了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-11 21:11:47 | 显示全部楼层
zltzlt 发表于 2020-2-11 19:13
再试了一遍,l2 和 l3 也没有改变

根据这串代码您看一下l1 l2 l3 的值,我试过了  是有改变的。

  1. l1=[1,2,3]
  2. l2=l1[:]
  3. l3=l1
  4. l1.sort(reveser=True)
复制代码


2.a={}您指的是把空字典赋值给了a标签,那原来a标签被赋予的值呢,就没了吗?比如:
原来的a={1:'one',2:'two,3:'three''}      接下来我打一行代码: a ={},   那此时的a应该只有{}空字典了吧。   我现在的问题是为什么第一点中的=号是会改变的  而 第二点中字典的的=号却不会随之改变呢?
感谢您的回答  万分感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-11 21:16:54 | 显示全部楼层
本帖最后由 wangzhenyu867 于 2020-2-11 21:18 编辑
zltzlt 发表于 2020-2-11 19:13
再试了一遍,l2 和 l3 也没有改变

  1. >>>l1=[1,2,3]
  2. >>>l2=l1[:]
  3. >>>l3=l1
  4. >>>l1.sort(reverse=True)
复制代码

抱歉这段代码刚才打错了reverse打错了,我试了一下   您可能不能直接复制  麻烦您一句一句复制一下  在python中运行一下试试,   麻烦您了  谢谢

2.a={}您指的是把空字典赋值给了a标签,那原来a标签被赋予的值呢,就没了吗?比如:
原来的a={1:'one',2:'two,3:'three''}      接下来我打一行代码: a ={},   那此时的a应该只有{}空字典了吧。   我现在的问题是为什么第一点中的=号是会改变的  而 第二点中字典的的=号却不会随之改变呢?
感谢您的回答  万分感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 13:23:23 | 显示全部楼层
wangzhenyu867 发表于 2020-2-11 21:16
抱歉这段代码刚才打错了reverse打错了,我试了一下   您可能不能直接复制  麻烦您一句一句复制一下   ...

2. 是没了,因为被覆盖掉了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 20:30:03 | 显示全部楼层
zltzlt 发表于 2020-2-12 13:23
2. 是没了,因为被覆盖掉了。

那段代码您运行了吗?您看一下  为什么在第一点中的list2 = list,list2随list的变化而变化,但是第二点中的b = a却没有随着a字典的变化而变化呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 21:30:31 | 显示全部楼层
wangzhenyu867 发表于 2020-2-11 21:11
根据这串代码您看一下l1 l2 l3 的值,我试过了  是有改变的。

你漏了 l1 = []。执行完这一句后,l2、 l3 和 l1 就没有任何关系了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-22 12:59:48 | 显示全部楼层
zltzlt 发表于 2020-2-12 21:30
你漏了 l1 = []。执行完这一句后,l2、 l3 和 l1 就没有任何关系了。

即使执行了“将空的数组赋值给l1”这句话,应该 l3 跟 l1 还是一致的才对啊,视频里说的只要用的是=符号(即l3 = l1),那么l3就会跟l1一直保持一致。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-22 13:36:19 | 显示全部楼层
wangzhenyu867 发表于 2020-2-12 20:30
那段代码您运行了吗?您看一下  为什么在第一点中的list2 = list,list2随list的变化而变化,但是第二点 ...

因为第一段你l1.reverse是把l1的内容变了,但是a={}却没有清空a的文件,因为a={}是把a的标签贴到空字典上了,课上讲了清空字典用clear函数,你用a={}并没有清空原来那个字典自然b就不会变。你要是把给a加一个元素,应该b也会变,你可以试试我去吃饭了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-22 08:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表