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
usnake
V2EX  ›  Python

Python 里面列表、字典、集合的删除方法好难记啊

  •  
  •   usnake · 2022-09-17 21:15:26 +08:00 · 2947 次点击
    这是一个创建于 798 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家都是怎么区分 pop popitem discard remove del 这些该用在什么地方的啊?

    18 条回复    2022-09-21 09:04:18 +08:00
    filwaline
        1
    filwaline  
       2022-09-17 21:23:48 +08:00
    为毛要记忆这些东西,用到的时候靠 IDE 的补全提示就好了,要不就随手敲个 help ,再不济你还可以去看文档啊。
    ytmsdy
        2
    ytmsdy  
       2022-09-17 21:25:19 +08:00
    要用的时候,临时搜索一下就好!不要太纠结于这些事情,用的多了,慢慢的就知道了。
    我写 Python 都快 5 年了,有一些函数函数不记得。
    LeeReamond
        3
    LeeReamond  
       2022-09-17 21:26:43 +08:00
    记不住建议回去重读 python 之禅,理解一下“最好只有一个最好的”是啥意思,然后你起码可以少记一些。。。剩下的,列表是一个逻辑上的栈,删除自然可以用 pop ,字典删除就是删除,这用记么。。
    ysc3839
        4
    ysc3839  
       2022-09-17 21:37:46 +08:00 via Android   ❤️ 1
    看文档
    efaun
        5
    efaun  
       2022-09-17 21:49:56 +08:00
    这就是我不喜欢 Python 的原因, 但又不得不用

    像 java 哪个方法忘了或者不知道有什么方法可以用, 打个点 ide 就能提示出来, Python 打个点提示的都是些乱七八糟的玩意,提示的还不是这个函数的
    aijam
        6
    aijam  
       2022-09-17 22:02:11 +08:00   ❤️ 1
    好问题,因为他们语义不相同。
    比如对 dict 来说,
    + pop(key, [default]),返回一个 key 对应的值,并把这个 key 移除。相对于 get(key, [default])方法。
    + popitem(),是移除并返回一个(key, value)对。相对于 items()方法。
    + del 是根据 key 删除
    + remove 是根据 value 删除,value 没找到会丢异常
    然而对 set 来说,
    + pop()没有参数,只是返回删除任意值。
    + 那要删除一个特定的值的时候,就有了 discard(item)。
    + remove 同 dict 一样,会丢异常
    + 那想 remove 但是不需要丢异常就有了 discard 。
    诸如此类,全记住意义不大,更需要记住的各个数据结构的本质和使用场景,需要的时候查一下方法就可以。
    JasonLaw
        7
    JasonLaw  
       2022-09-17 22:04:30 +08:00 via iPhone
    @efaun #5 你知道为什么会出现“ Python 打个点提示的都是些乱七八糟的玩意,提示的还不是这个函数的”这种情况吗?
    LindsayZhou
        8
    LindsayZhou  
       2022-09-17 22:11:46 +08:00
    @efaun #5
    实际这跟 Python 没什么关系吧,现在 IDE 应该都是调的 LSP ,要么是你 IDE 出了问题,给了 LSP 错的东西,要么是 LSP 出了什么奇怪的问题,怎么也不到 Python 头上吧。
    我用 Emacs ,倒是没碰到过。
    ClericPy
        9
    ClericPy  
       2022-09-17 22:13:43 +08:00
    和六楼差不多, 感觉如果我自己设计这些方法, 命名也是这种样子, 因为确实有具体语义

    刚开始可能确实记不住, 写一两年真用到很快就记住了... 有时候脑子没想起来, 手已经打出来了
    ml1344677
        10
    ml1344677  
       2022-09-17 22:25:12 +08:00
    我每次用 setdefault()都要查一下 哈哈哈
    DOLLOR
        11
    DOLLOR  
       2022-09-17 23:10:19 +08:00 via Android
    边写边查文档,或者写 type hints ,让编辑器提示。
    Jirajine
        12
    Jirajine  
       2022-09-17 23:11:18 +08:00
    不常用的方法,翻一翻补全菜单就行了,常用的自然就已经记住了。
    laqow
        13
    laqow  
       2022-09-18 11:17:43 +08:00
    只用其中一个,用不了就创造条件用
    Morriaty
        14
    Morriaty  
       2022-09-18 16:07:58 +08:00   ❤️ 1
    还有一点,删除动作真的很少很少见。写了四五年 python 了,业务代码也有,算法模型也有,新增元素非常常见,但删除元素真的很少。。。比如 dict.remove set.dicard 方法,你这里不说,我都想不起来
    lookStupiToForce
        15
    lookStupiToForce  
       2022-09-19 10:46:05 +08:00
    那些不常用的真不必要记,记了不用会继续忘,到时候怕错还是要回头查文档
    python 里语法糖那么多,你如果每一种语法糖都想学会用熟用透,接手你代码的同事一定且肯定会吐血
    多的不说,不看文档有多少人能把 for else ,while else ,try else 的具体用法分清的?有多少人能把'str'.format(), f'str{param}'的格式给弄清的?

    #6 楼确实总结得很好,但我想大多数人看过一遍之后只要没在代码里经常用,过一个星期就忘光了,我可能是明天如果要用都得去再查一次
    krixaar
        16
    krixaar  
       2022-09-19 12:01:03 +08:00
    删什么删,直接 dic = {k:v for k,v in dic.items() if k != '要删除的 key'},comprehension 语法通用 (逃
    blankmiss
        17
    blankmiss  
       2022-09-21 08:59:59 +08:00
    @JasonLaw type hints 可以参考我的历史主题 /t/866860
    JasonLaw
        18
    JasonLaw  
       2022-09-21 09:04:18 +08:00
    @blankmiss #17 这是个疑问句😅,这种情况不是 Python 的问题,而是不熟悉 Python 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2653 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:56 · PVG 13:56 · LAX 21:56 · JFK 00:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.