object Scala_List_Methods
{
def main(args: Array[String]){// define two lists
val x =List(1,40,10)
val y =List(20,25,30)
val z =List("DataCamp","Tutorials","Are","The","Best")//Headprintln();println("Head of list x, y, z = "+(x.head, y.head, z.head));println();//Tailprintln("Tail of list x, y, z = "+(x.tail, y.tail, z.tail));println();//isEmptyprintln("Is list x, y, z empty? = "+(x.isEmpty, y.isEmpty, z.isEmpty));println();//Concatenateprintln("Concatenating x, y, z lists with the first method = "+(x:::y:::z));println("Concatenating x, y, z lists with the second method = "+((x).:::(y).:::(z)));println("Concatenating x, y, z lists with the third method = "+(List.concat(x,y,z)));println();//Reverseprintln("Reverse of x, y, z is = "+(x.reverse, y.reverse, z.reverse));println();//Fillprintln("Output of Fill method is = "+(List.fill(5)(z)));println();//Tabulateprintln("Output of Tabulate method is = "+(List.tabulate(5)(x=> x * x * x)));}}技术支持
您可能还对以下教程感兴趣:
引言
一个单向链表结构,包含 3 个整数元素(来源:Wikipedia - List (abstract data type))。
一般而言,列表是一种抽象数据类型序列,表示固定数量的值。值可以由程序以编程方式操作,并且在列表中可以出现多次。上图展示了一个列表的实例:由三个整数值组成的单向链表。列表也被视为一种数据结构,其中一个示例就是链表。
许多编程语言都支持列表,其中使用最广泛的之一是 Python。列表通常可以通过按顺序写出各项,并用逗号、分号或空格分隔,并放在一对定界符内来构造,例如圆括号
()、方括号[]、花括号{}或尖括号<>。某些语言(如 Python)允许像数组类型那样对列表类型进行索引或切片,在这种情况下,该数据类型更准确地被描述为数组(来源:Wikipedia - List (abstract data type))。在 Scala 中,列表是一种包含
不可变数据的集合,这意味着一旦创建就无法更改。在 Scala 中,List 表示的是链表。在 Scala 的列表中,每个元素不必具有相同的数据类型。Scala 列表的实现会在构造阶段在内部使用可变状态。在 Scala 中,List 定义在
scala.collection.immutable包下,因此它们是不可变的。最后,Scala 的 List 提供了多种方法,如add、prepend、max、min等。定义 Scala List 的语法
val variable_name: List[type] = List(item1, item2, item3) 或 val variable_name = List(item1, item2, item3)。在 Scala 中,List 与数组非常相似。然而,Scala 的 List 是不可变的,并且表示链表数据结构。另一方面,Scala 数组是扁平且可变的。
让我们通过一个示例快速理解上述区别。
Scala List 与 Scala Array
首先在 Scala 中定义一个数组。
然后您将在第 1 个索引位置修改一个值(Scala 数组从 0 开始索引),看看是否可以更新。
由上面的代码片段可以看出,Scala 数组确实允许您修改第 1 个索引处的值。
现在,定义一个
Scala List,并尝试复现上述操作。从上述示例可以得出结论:由于 Scala 的 List 是不可变的,尝试更新其值会导致错误。
Scala List 方法
head:返回 Scala 列表的第一个元素。
tail:返回除第一个元素外的所有元素。
isEmpty:检查列表是否为空;若为空返回 True,否则返回 False。
fill():创建由零个或多个指定元素副本组成的统一列表。
reverse:将列表元素反转。
$:::$ 或 $.:::$ 或 .concat():连接两个或多个列表。
tabulate():可以按表格方式生成列表。其思想与
fill()方法类似,但与fill()不同,它接收两个参数。第一个参数给出要创建的列表的维度,第二个参数描述列表的元素,这些元素由函数计算得到。如果上述某些方法目前对您来说不太直观,不必担心,接下来您将通过示例在 Scala 中实现它们。但在此之前,让我们先学习如何定义 Scala 的 List。
您将使用
字符串、整数(1D 与 2D)数据类型来创建 Scala List。您还将学习如何创建同时包含字符串和整数的列表。一维整数列表
一维混合列表(整数与字符串)
一维字符串列表
二维列表
对列表进行算术运算
在本例中,您将使用列表而不是仅定义变量。与变量不同,List 可以容纳 n 个值;您将对两个列表执行算术运算,而不是对两个变量。
下面我们快速看看如何实现。
为便于应用算术运算,您将使用紧随列表 x 和 y 的
zipped.map函数。然后在zipped.map方法中以参数形式指定您想要执行的运算。最后,让我们编写一段包含所有这些方法的代码。
结语
恭喜您完成本次 Scala 教程。
如对本教程有任何疑问,欢迎在下方评论区提问。