超神奇葩天才 发表于 2021-1-2 18:44:05

关于remove()问题

谁能帮我解答下remove()到底是干啥的

qin_yin 发表于 2021-1-2 18:44:06

remove()在这里是属于list的方法(你学到面向对象时候就知道什么叫方法)
作用:
   删除列表中指定的元素
例:
list1 =
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

qiuyouzhi 发表于 2021-1-2 18:49:19

从列表中删除指定的元素

Minecraft程序猿 发表于 2021-1-2 19:08:04

删除元素

超神奇葩天才 发表于 2021-1-2 19:08:26

qiuyouzhi 发表于 2021-1-2 18:49
从列表中删除指定的元素

兄弟你在看一遍

qiuyouzhi 发表于 2021-1-2 19:10:45

超神奇葩天才 发表于 2021-1-2 19:08
兄弟你在看一遍

因为你写了个 b = a,所以 b 和 a 会同时变化

超神奇葩天才 发表于 2021-1-2 19:13:52

qiuyouzhi 发表于 2021-1-2 19:10
因为你写了个 b = a,所以 b 和 a 会同时变化

为啥

昨非 发表于 2021-1-2 19:21:11

超神奇葩天才 发表于 2021-1-2 19:13
为啥

a和b指向同一个地址(列表)

qiuyouzhi 发表于 2021-1-2 19:24:24

超神奇葩天才 发表于 2021-1-2 19:13
为啥

这个算基础知识吧,他俩指向了同一个列表,操作的也是同一个列表

bigangelno1 发表于 2021-1-2 19:24:32

创建一个同样的列表,应该用.copy()方法。如果是采用listA=listB方式,那么两个变量是名称不同,地址相同,修改一个。

太阳总会升起 发表于 2021-1-2 19:33:53

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

这部分你可以看深浅拷贝,希望上面我的描述能让你看懂{:5_95:}

qiuyouzhi 发表于 2021-1-2 20:13:08

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

用切片也行的

skinacc 发表于 2021-1-2 23:14:45

如果你的疑惑是:为什么最后a和b的打印结果是一样的?
答案:由于b被赋值(=)为a,所以b是跟随a变化而变化的。

如果你的疑惑是:为什么打印的结果,只删除了一个1,而不是把列表里的1都删除了?
答案:因为.remove()是从左边开始删除找到的第一个值,而不是重复执行。

春华秋实2009 发表于 2021-1-3 18:25:41

删除指定的元素
例:
>>> i=
>>> i.remove(1)
>>> i

页: [1]
查看完整版本: 关于remove()问题