1

我正在尝试将一些 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]

将按预期输出:

['Apple']
['Orange']
['Pear']

而红宝石代码:

output=["Apple","Orange","Pear"]
team_slices=[[0,1],[1,2],[2,3]]
team_slices.each do |start,ending|
    print output[start..ending]
end

将输出:

["Apple","Orange"]
["Orange","Pear"]
["Pear"]

有什么方法可以让切片更等同于 python?我知道我可能在这里遗漏了一些简单的东西

4

1 回答 1

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

PS:在 ruby​​ 中,如果您想遵守约定,您应该使用 2 个空格进行缩进;)

编辑| 由于 ruby​​ 将其用作语法关键字,因此不得不重命名end为。last

于 2012-06-14T16:10:19.290 回答