使用 Take 和 Drop 进行列表切片
本课属于 Coddy Kotlin 学习旅程的“基础知识”单元。第 80 课,共 93 课。
Kotlin 提供了两种更简单的方法,用于提取列表的一部分。如果你只需要从开头或结尾获取元素,可以使用 take() 和 drop()。
take() 方法会返回一个包含前 n 个元素的新列表:
val numbers = listOf(10, 20, 30, 40, 50)
val firstThree = numbers.take(3)
println(firstThree) // [10, 20, 30]drop() 方法的作用正好相反。它跳过前 n 个元素,并返回其余元素:
val numbers = listOf(10, 20, 30, 40, 50)
val afterTwo = numbers.drop(2)
println(afterTwo) // [30, 40, 50]与 subList() 不同,这些方法返回的是独立副本,而不是视图。如果你只是想获取“前几个”元素或“除前几个以外的所有”元素,这些方法也更易读。
你可以结合这两种方法来提取中间部分:
val letters = listOf("A", "B", "C", "D", "E")
val middle = letters.drop(1).take(3)
println(middle) // [B, C, D]如果你请求的元素数量超过实际存在的数量,这些方法只会返回可用的元素,不会抛出错误:
val short = listOf(1, 2)
println(short.take(10)) // [1, 2]
println(short.drop(10)) // []挑战
中等你会收到一个整数列表和两个数字:从开头丢弃多少个元素,以及丢弃后取多少个元素。
将 drop() 和 take() 一起使用,提取列表中间的一段,然后打印提取出的元素。
输入格式:
- 第一行:一个整数
n,表示元素的数量 - 接下来的
n行:要添加到列表中的整数 - 下一行:从开头丢弃的元素数量
- 最后一行:丢弃后要取的元素数量
输出格式:
按 Kotlin 默认的列表格式打印结果列表。
示例:
如果列表是 [10, 20, 30, 40, 50, 60],丢弃数量是 2,取出数量是 3,输出应为:
[30, 40, 50]亲手试试
fun main() {
// 读取元素数量
val n = readLine()!!.toInt()
// 读取列表元素
val list = mutableListOf<Int>()
for (i in 1..n) {
list.add(readLine()!!.toInt())
}
// 读取 drop 和 take 的值
val dropCount = readLine()!!.toInt()
val takeCount = readLine()!!.toInt()
// TODO: 在下面编写你的代码
// 使用 drop() 和 take() 提取中间部分
// 输出结果
println(result)
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Kotlin 在线编辑器