鱼C论坛

 找回密码
 立即注册
查看: 2382|回复: 13

[已解决]关于remove()问题

[复制链接]
发表于 2021-1-2 18:44:05 | 显示全部楼层 |阅读模式
10鱼币
谁能帮我解答下remove()到底是干啥的
最佳答案
2021-1-2 18:44:06
remove()在这里是属于list的方法(你学到面向对象时候就知道什么叫方法)
作用:
   删除列表中指定的元素
例:
list1 = [1,2,3,4,5]
list1.remove(1)
print(list1)
结果:2,3,4,5

我猜你可能疑惑的为什么b会随着a改变
在计算机的中,所有的实时数据,都会实时的保存在内存中,这么说可能不太好理解
举例吧,并竟更加直观
a = 3
print(id(a))
----------------------------------------------
当python执行到a = 3的时候,python会计算机的内存中开辟一块区域,用于存放这个数值,然后贴身a这个标签
当你引用a变量的时候,python会去查找内存中的这个id地址对应的数据
------------------------------------------------
分割线中的内容只是我个人的理解,我也没有太深入的去了解这些内部机制,如有不对欢迎大家指出


这里b = a, 就相当于给a又帖了一个标签,也就是浅拷贝,

我们来讲通俗的讲一下吧
老王 = 张三
王二 = 老王
这里就相当于给一个人起了多个名字,无论叫老王,还是王二,都是指的张三的这个人,就像在出门在外有ni 你姓名,绰号,都是指向的你,当张三发生一些改变,老王,王二,也会发生改变,因为这些名字(标签)本身就是指的同一个人
下面是小甲鱼视频的中的一张截图,我觉得很好的说明这种情况,如果你还不理解的话,可以去观看小甲鱼的视频:视频地址https://www.bilibili.com/video/BV1xs411Q799?p=13

代码

代码

运行结果

运行结果

最佳答案

查看完整内容

remove()在这里是属于list的方法(你学到面向对象时候就知道什么叫方法) 作用: 删除列表中指定的元素 例: 结果:2,3,4,5 我猜你可能疑惑的为什么b会随着a改变 在计算机的中,所有的实时数据,都会实时的保存在内存中,这么说可能不太好理解 举例吧,并竟更加直观 ---------------------------------------------- 当python执行到a = 3的时候,python会计算机的内存中开辟一块区域,用于存放这个数值,然后贴身a这个标 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 18:44:06 | 显示全部楼层    本楼为最佳答案   
remove()在这里是属于list的方法(你学到面向对象时候就知道什么叫方法)
作用:
   删除列表中指定的元素
例:
list1 = [1,2,3,4,5]
list1.remove(1)
print(list1)
结果:2,3,4,5

我猜你可能疑惑的为什么b会随着a改变
在计算机的中,所有的实时数据,都会实时的保存在内存中,这么说可能不太好理解
举例吧,并竟更加直观
a = 3
print(id(a))
----------------------------------------------
当python执行到a = 3的时候,python会计算机的内存中开辟一块区域,用于存放这个数值,然后贴身a这个标签
当你引用a变量的时候,python会去查找内存中的这个id地址对应的数据
------------------------------------------------
分割线中的内容只是我个人的理解,我也没有太深入的去了解这些内部机制,如有不对欢迎大家指出


这里b = a, 就相当于给a又帖了一个标签,也就是浅拷贝,

我们来讲通俗的讲一下吧
老王 = 张三
王二 = 老王
这里就相当于给一个人起了多个名字,无论叫老王,还是王二,都是指的张三的这个人,就像在出门在外有ni 你姓名,绰号,都是指向的你,当张三发生一些改变,老王,王二,也会发生改变,因为这些名字(标签)本身就是指的同一个人
下面是小甲鱼视频的中的一张截图,我觉得很好的说明这种情况,如果你还不理解的话,可以去观看小甲鱼的视频:视频地址https://www.bilibili.com/video/BV1xs411Q799?p=13

捕11获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 18:49:19 | 显示全部楼层
从列表中删除指定的元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 19:08:04 From FishC Mobile | 显示全部楼层
删除元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-2 19:08:26 | 显示全部楼层
qiuyouzhi 发表于 2021-1-2 18:49
从列表中删除指定的元素

兄弟你在看一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 19:10:45 | 显示全部楼层

因为你写了个 b = a,所以 b 和 a 会同时变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-2 19:13:52 | 显示全部楼层
qiuyouzhi 发表于 2021-1-2 19:10
因为你写了个 b = a,所以 b 和 a 会同时变化

为啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 19:21:11 | 显示全部楼层

a和b指向同一个地址(列表)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 19:24:24 | 显示全部楼层

这个算基础知识吧,他俩指向了同一个列表,操作的也是同一个列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 19:24:32 | 显示全部楼层
创建一个同样的列表,应该用.copy()方法。如果是采用listA=listB方式,那么两个变量是名称不同,地址相同,修改一个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 19:33:53 | 显示全部楼层
第一行给a一个列表,py会在内存中创建这个列表并给他一个a的标签,创建的列表就相当于一个仓库的货物,而a就是贴在货物上的标签
第二行b=a,这里没有创建新的列表,只是给刚才创建的列表多加了个标签,也就是你在同一个货物上贴了两张不同的标签
第三行给a删除元素,因为a和b本质上对应的是同一个列表,所以a改变b也改变了

这部分你可以看深浅拷贝,希望上面我的描述能让你看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 20:13:08 | 显示全部楼层
bigangelno1 发表于 2021-1-2 19:24
创建一个同样的列表,应该用.copy()方法。如果是采用listA=listB方式,那么两个变量是名称不同,地址相同, ...

用切片也行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 23:14:45 | 显示全部楼层
如果你的疑惑是:为什么最后a和b的打印结果是一样的?
答案:由于b被赋值(=)为a,所以b是跟随a变化而变化的。

如果你的疑惑是:为什么打印的结果,只删除了一个1,而不是把列表里的1都删除了?
答案:因为.remove()是从左边开始删除找到的第一个值,而不是重复执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-3 18:25:41 | 显示全部楼层
删除指定的元素
例:
>>> i=[1,2,3]
>>> i.remove(1)
>>> i
[2,3]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 21:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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