我正在尝试将一些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?我知道我很可能在这里错过了一些简单的
答案 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
。