大家都是怎么区分 pop popitem discard remove del 这些该用在什么地方的啊?
1
filwaline 2022-09-17 21:23:48 +08:00
为毛要记忆这些东西,用到的时候靠 IDE 的补全提示就好了,要不就随手敲个 help ,再不济你还可以去看文档啊。
|
2
ytmsdy 2022-09-17 21:25:19 +08:00
要用的时候,临时搜索一下就好!不要太纠结于这些事情,用的多了,慢慢的就知道了。
我写 Python 都快 5 年了,有一些函数函数不记得。 |
3
LeeReamond 2022-09-17 21:26:43 +08:00
记不住建议回去重读 python 之禅,理解一下“最好只有一个最好的”是啥意思,然后你起码可以少记一些。。。剩下的,列表是一个逻辑上的栈,删除自然可以用 pop ,字典删除就是删除,这用记么。。
|
4
ysc3839 2022-09-17 21:37:46 +08:00 via Android 1
看文档
|
5
efaun 2022-09-17 21:49:56 +08:00
这就是我不喜欢 Python 的原因, 但又不得不用
像 java 哪个方法忘了或者不知道有什么方法可以用, 打个点 ide 就能提示出来, Python 打个点提示的都是些乱七八糟的玩意,提示的还不是这个函数的 |
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 。 诸如此类,全记住意义不大,更需要记住的各个数据结构的本质和使用场景,需要的时候查一下方法就可以。 |
7
JasonLaw 2022-09-17 22:04:30 +08:00 via iPhone
@efaun #5 你知道为什么会出现“ Python 打个点提示的都是些乱七八糟的玩意,提示的还不是这个函数的”这种情况吗?
|
8
LindsayZhou 2022-09-17 22:11:46 +08:00
@efaun #5
实际这跟 Python 没什么关系吧,现在 IDE 应该都是调的 LSP ,要么是你 IDE 出了问题,给了 LSP 错的东西,要么是 LSP 出了什么奇怪的问题,怎么也不到 Python 头上吧。 我用 Emacs ,倒是没碰到过。 |
9
ClericPy 2022-09-17 22:13:43 +08:00
和六楼差不多, 感觉如果我自己设计这些方法, 命名也是这种样子, 因为确实有具体语义
刚开始可能确实记不住, 写一两年真用到很快就记住了... 有时候脑子没想起来, 手已经打出来了 |
10
ml1344677 2022-09-17 22:25:12 +08:00
我每次用 setdefault()都要查一下 哈哈哈
|
11
DOLLOR 2022-09-17 23:10:19 +08:00 via Android
边写边查文档,或者写 type hints ,让编辑器提示。
|
12
Jirajine 2022-09-17 23:11:18 +08:00
不常用的方法,翻一翻补全菜单就行了,常用的自然就已经记住了。
|
13
laqow 2022-09-18 11:17:43 +08:00
只用其中一个,用不了就创造条件用
|
14
Morriaty 2022-09-18 16:07:58 +08:00 1
还有一点,删除动作真的很少很少见。写了四五年 python 了,业务代码也有,算法模型也有,新增元素非常常见,但删除元素真的很少。。。比如 dict.remove set.dicard 方法,你这里不说,我都想不起来
|
15
lookStupiToForce 2022-09-19 10:46:05 +08:00
那些不常用的真不必要记,记了不用会继续忘,到时候怕错还是要回头查文档
python 里语法糖那么多,你如果每一种语法糖都想学会用熟用透,接手你代码的同事一定且肯定会吐血 多的不说,不看文档有多少人能把 for else ,while else ,try else 的具体用法分清的?有多少人能把'str'.format(), f'str{param}'的格式给弄清的? #6 楼确实总结得很好,但我想大多数人看过一遍之后只要没在代码里经常用,过一个星期就忘光了,我可能是明天如果要用都得去再查一次 |
16
krixaar 2022-09-19 12:01:03 +08:00
删什么删,直接 dic = {k:v for k,v in dic.items() if k != '要删除的 key'},comprehension 语法通用 (逃
|