众所周知,列表的 remove()方法是用于移除列表中某个值的第一个匹配项的方法。 如果某个列表中的所有元素都是数字或字符串,那么 remove()方法就很好理解。 但是,如果列表中的元素都是类的对象呢? 我在编写某个项目时就遇到了这个困扰。 首先,我使用列表保存了一系列的不同的对象,然后我需要遍历所有的元素并筛选,得到一个新的列表。 于是我先对这个列表进行了潜复制,然后遍历原列表,进行筛选,满足条件的元素(对象)将从潜复制后的新列表中使用 remove()方法移除。
显然这不是最好的方法,我认为应该先生成一个空列表,然后将不满足条件的元素(对象)添加到这个新列表里。
虽然最终代码运行结果合乎我的预期,但我还是很困扰。 对于对象来说,list 的 remove()方法是如何判断它是否匹配的呢? 这个方法具体又是如何实现的呢? 如果我能阅读得到 Python 中有关 list 的源代码就好了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.