Scala中List的步长by

本文介绍了Scala中List的步长功能,利用`by`关键字可以按指定步长筛选列表元素。例如,通过步长筛选出1到99的奇数并计算它们的平方和,结果为166650。这种操作返回的是一个range对象。
摘要由CSDN通过智能技术生成

Scala的List不仅可以指定循环区间,而且还能根据步长筛选元素。

List中的步长,by关键字:

scala> 1 to 100 by 3
res64: scala.collection.immutable.Range = Range(1, 4, 7, 10, 13, 16, 19, 22, 25,
 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85,
 88, 91, 94, 97, 100)

scala> 1 to 100 by 2
res65: scala.collection.immutable.Range = Range(1, 3, 5, 7, 9, 11, 13, 15, 17, 1
9, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 5
9, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 9
9)

scala> 1 to 100 by 1
res66: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1
1, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 3
1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 5
1, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 7
1, 72, 73, 74, 75, 76, 77, 78,
ScalaList是一种不可变的序列,它是一种线性递归数据结构,每个列表要么是空的(表示为Nil),要么是一个包含元素和另一个列表(尾部)的组合(表示为element :: tail)。在Spark使用ScalaList与在Scala普通环境使用List并无太大区别,因为SparkScala原生的数据结构提供了良好的支持。 ListSpark的使用场景通常包括数据预处理、传递小规模的数据集或者作为算法的输入。例如,可以在Spark的RDD操作使用List来创建初始数据集。 创建List的基本方式包括使用列表字面量语法或者使用列表构造函数: ```scala // 使用列表字面量 val list1 = List(1, 2, 3) // 使用列表构造函数 val list2 = 1 :: 2 :: 3 :: Nil ``` List支持很多操作,例如: - `head` - 返回列表的第一个元素。 - `tail` - 返回除了第一个元素之外的列表。 - `isEmpty` - 检查列表是否为空。 - `::` - 创建一个新列表,前一个元素作为头部,后一个列表作为尾部。 - `map` - 对列表的每个元素应用给定的函数并返回一个新的列表。 - `filter` - 返回一个新的列表,这个列表只包含满足给定条件的元素。 - `reduce` - 从列表的第一个元素开始,依次应用给定的二元操作函数,归约整个列表到单一的值。 - `fold` - 与reduce类似,但是可以提供一个初始值,这个初始值在列表为空时作为结果返回。 在Spark,你可以使用List来初始化一个RDD,例如: ```scala val sparkContext = ... // SparkContext实例 val listRDD = sparkContext.parallelize(List(1, 2, 3, 4)) ``` 这段代码创建了一个RDD,这个RDD包含元素1, 2, 3, 4,并且这个RDD可以在Spark集群上并行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值