V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Pzqqt
V2EX  ›  Python

关于 List 的 remove 方法的一些疑问

  •  
  •   Pzqqt · 2018-09-04 11:21:50 +08:00 · 1951 次点击
    这是一个创建于 2297 天前的主题,其中的信息可能已经有所发展或是发生改变。

    众所周知,列表的 remove()方法是用于移除列表中某个值的第一个匹配项的方法。 如果某个列表中的所有元素都是数字或字符串,那么 remove()方法就很好理解。 但是,如果列表中的元素都是类的对象呢? 我在编写某个项目时就遇到了这个困扰。 首先,我使用列表保存了一系列的不同的对象,然后我需要遍历所有的元素并筛选,得到一个新的列表。 于是我先对这个列表进行了潜复制,然后遍历原列表,进行筛选,满足条件的元素(对象)将从潜复制后的新列表中使用 remove()方法移除。

    显然这不是最好的方法,我认为应该先生成一个空列表,然后将不满足条件的元素(对象)添加到这个新列表里。
    

    虽然最终代码运行结果合乎我的预期,但我还是很困扰。 对于对象来说,list 的 remove()方法是如何判断它是否匹配的呢? 这个方法具体又是如何实现的呢? 如果我能阅读得到 Python 中有关 list 的源代码就好了。

    Mistwave
        1
    Mistwave  
       2018-09-04 11:55:34 +08:00 via iPhone
    privatezcoding
        3
    privatezcoding  
       2018-09-04 17:15:35 +08:00
    jiangbingo
        4
    jiangbingo  
       2018-09-04 17:32:10 +08:00
    @Mistwave 话说平时碰到这些有趣的网址除了放入收藏夹,你们都是如何记住的呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 425ms · UTC 18:07 · PVG 02:07 · LAX 10:07 · JFK 13:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.