Menu
CoddyTech

使用索引切片数组

本课属于 Coddy Ruby 学习旅程的“基础知识”单元。第 70 课,共 88 课。

Ruby 还提供了另一种切分数组的方法,你可以指定起始索引和长度。你不必指定范围,只需提供两个数字:从哪里开始,以及提取多少个元素。

这种语法使用逗号将起始索引与数量分隔开:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]

puts slice  # 输出:20, 30, 40

这会从索引 1 开始提取 3 个元素。第一个数字是起始位置,第二个数字是你想要的元素数量。

当你确切知道需要多少个元素时,这种方法特别有用:

letters = ["a", "b", "c", "d", "e"]
first_two = letters[0, 2]

puts first_two  # 输出:a, b

负索引在这里也适用。你可以从数组末尾开始:

colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]

puts last_two  # 输出:blue, yellow

如果你请求的元素数量超过可用元素的数量,Ruby 会直接返回现有的元素,不会引发错误:

nums = [1, 2, 3]
slice = nums[1, 10]

puts slice  # 输出:2, 3

如果你知道所需元素的数量,就选择这种方法;如果你知道确切的位置,就使用范围。

challenge icon

挑战

简单

读取 3 个输入:

  1. 一行以逗号分隔的整数(例如,5,10,15,20,25,30,35,40)
  2. 起始索引(整数)
  3. 要提取的元素数量(整数)

将第一个输入拆分为整数数组。使用起始索引和数量,通过索引和长度语法对数组进行切片,然后将切片部分中的每个元素单独打印在一行。

例如,如果输入是 5,10,15,20,25,30,35,40、2 和 4,输出应为:

15
20
25
30

如果输入是 100,200,300,400,500、0 和 2,输出应为:

100
200

如果输入是 a,b,c,d,e,f,g、-3 和 2,输出应为:

e
f

如果输入是 10,20,30、1 和 10,输出应为:

20
30

亲手试试

# 读取输入
input_line = gets.chomp
start_index = gets.chomp.to_i
count = gets.chomp.to_i

# 将输入拆分为数组
arr = input_line.split(',')

# TODO:在下方编写代码,使用索引和长度语法对数组进行切片
# 并将每个元素分别打印在单独一行
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Ruby 在线编译器