为什么Python的“追加”不是“推”?

问题:

有没有人知道为什么Python的list.append函数不被称为list.push,因为已经有一个list.pop删除并返回最后一个元素(索引为-1),list.append语义与该用法一致?

回答:

因为“追加”在很久以前就存在于“流行”之前。 Python 0.9.1在1991年初支持list.append。相比之下,这是1997年关于添加流行音乐的discussion on comp.lang.python的一部分。Guido写道:

为了实现一个栈,需要添加一个list.pop()原语(不,我不是在任何原则的基础上反对这个特定的)。 list.push()可以添加与list.pop()对称,但我不是同一个操作的多个名字的粉丝 – 迟早你会读取使用另一个的代码,所以你需要学习两者,这是更多的认知负担。

你还可以看到他讨论了如果push / pop / put / pull应该在元素[0]或元素[-1]之后,他发布对Icon的列表的引用:

我认为所有这一切最好不要列出对象实现 – 如果你需要一个堆栈,或者一个具有特殊语义的队列,写一个使用列表的小类

换句话说,对于已经支持快速append()和del list [-1]的Python列表直接实现的堆栈,默认情况下,list.pop()在最后一个元素上有效。即使其他语言做的不同。
这里隐含的是,大多数人需要附加到列表中,但是有更少的机会将列表作为堆栈来处理,这就是为什么list.append来得如此之早。

 
 Code问答: codewenda.com
Stackoverflow:Why is Python’s “append” not “push”?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 26 = 28