![]() |
1
6
直接的答案是:这是一个设计缺陷。
您应该能够用相同的方法名插入到任何有意义的通用插入(例如,不包括dict)容器中。插入应该有一个一致的通用名称,例如。
在不同类型中为此操作使用不同的名称是一种毫无意义的不一致性,并且设置了一个糟糕的基本标准:库应该鼓励用户容器使用一致的API,而不是为每个基本容器提供基本上不兼容的API。 也就是说,在这种情况下,这通常不是一个实际问题:大多数情况下,当函数的结果是一个项目列表时,将其作为生成器实现。它们允许一致地处理这两种情况(从函数的角度),以及其他形式的迭代:
|
![]() |
2
4
添加和追加 是 不同的。集合是无序的,包含唯一的元素,而append则建议始终添加该项,并在末尾专门完成这一操作。 集合和列表都可以被视为iterables,这是它们的通用语义,并且可以由您的算法自由使用。 如果您的算法依赖于某种加法,那么您就不能简单地依赖于具有相同行为的集合、元组、列表、dict和字符串。 |
![]() |
3
1
实际原因可能与Python历史有关。 内置的集合类型不是 built-in until Python 2.6 ,它基于一个sets模块,在python 2.3之前,这个模块本身不在标准库中。显然,更改集合类型的语义可能会破坏依赖于原始集合模块的大量现有代码,而且通常语言设计人员避免在没有主要数字发布的情况下破坏现有代码。 如果愿意的话,您可以责怪最初的模块作者,但请记住,在python 2.2之前,用户定义的类型和内置类型必须存在于不同的宇宙中,这意味着您不能直接扩展内置类型,并且可能允许模块作者对不维护一致的集合语义感到满意。 |
![]() |
Giffyguy · 如何限制在构造向量后调用'resize()'? 3 年前 |
![]() |
vytaute · 返回表类型时Oracle函数中的类型错误 3 年前 |
![]() |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 3 年前 |
![]() |
dev-chicco · Laravel系列寻找常见物品 3 年前 |
![]() |
Mitch · Laravel-雄辩的单品合并系列 7 年前 |
![]() |
Kieran · 为什么类X可以从集合继承<X> 7 年前 |
![]() |
John · 如何在不返回集合本身的情况下返回集合的数据? 7 年前 |
![]() |
Niklas Mertsch · 在泛型集合中实现移除(对象o) 7 年前 |