在入门系列的最后,让我们来看看基于hash表的两种常见的数据结构,集合和映射。在Scala里的集合和映射,这两种数据结构都有可变和不可变的两种版本,区别仅仅在于类的继承关系。而Python的集合也有可变和不可变两种,内置的字典则是只有一种,但是在types模块里有基于字典的MappingProxyType的不可变的只读视图。
集合
先从集合说起吧,集合的意义和数学上的集合论的集合是一样的,里面的值不存在重复,有着集合的交并集的操作。
1.集合的构造
Scala
Python
从这里可以看出Scala默认的Set是不可变的集合。如果要做一个可变集,需要import。
而Python不需要import,它的不可变集合是内置的,使用的是frozenset。
2.集合的求交集和并集
Scala
Python
3.增添元素
Scala
Python
这里的set0实际上是重新赋值了,而不是原地添加,所以我们会使用var定义变量,而Python的集合是原地添加元素。
4.判断某个元素是否存在
Scala
Python
映射
Map这个实际上有很多的别名,在Scala里称为映射,而在Python则被称为字典,本质都是一样的基于Hash表的数据结构,能够快速的查找某个值。
1.构造
Scala
Python
我们可以注意到Scala的Map使用->作为分隔符,而Python使用了:(八卦下:这个符号通过Python,影响了js,进而成为了json的分隔符),Scala的默认版本是不可变的映射,而不是可变的映射,这也是Scala设计者对于函数式的不可变的推崇的体现吧
2.增添元素
初始化为空值
Python
好了,入门系列就到此为止了,下一章我们就要深入类和对象了,开始真正的编程之旅了。
领取专属 10元无门槛券
私享最新 技术干货