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

时间:2012-06-14 16:00:15

标签: python ruby list porting 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]

将按预期输出:

['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?我知道我很可能在这里错过了一些简单的

1 个答案:

答案 0 :(得分: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:在红宝石中,如果你想坚持惯例,你应该使用2个空格进行缩进;)

EDIT |由于ruby使用它作为语法关键字,因此必须将end重命名为last