你如何在Ruby中列出相当于python的切片?

nek*_*une 1 ruby python porting list slice

我正在尝试将一些python代码移植到ruby,我做得很好,使用等效的ruby函数,甚至删除/修改一些以使用更多的ruby功能.然而,在核心点我需要从python中的数组获取切片,以下工作正常:

output=["Apple","Orange","Pear"]
team_slices=[(0,1),(1,2),(2,3)]
for start,end in team_slices:
    print output[start:end]
Run Code Online (Sandbox Code Playgroud)

将按预期输出:

['Apple']
['Orange']
['Pear']
Run Code Online (Sandbox Code Playgroud)

而红宝石代码:

output=["Apple","Orange","Pear"]
team_slices=[[0,1],[1,2],[2,3]]
team_slices.each do |start,ending|
    print output[start..ending]
end
Run Code Online (Sandbox Code Playgroud)

将输出:

["Apple","Orange"]
["Orange","Pear"]
["Pear"]
Run Code Online (Sandbox Code Playgroud)

有没有办法做切片更像是python?我知道我可能在这里遗漏了一些简单的东西

d11*_*wtq 6

好像python的范围排除了最终值,所以只需...在ruby中使用变体:

output=["Apple","Orange","Pear"]
team_slices=[[0,1],[1,2],[2,3]]
team_slices.each do |start, last|
  print output[start...last]
end
Run Code Online (Sandbox Code Playgroud)

PS:在红宝石中你应该使用2个空格来缩进,如果你想坚持惯例;)

编辑| 只好重新命名end,以last因使用它作为一个语法关键字红宝石.