搜索从给定索引开始的Array元素

时间:2013-07-16 10:23:57

标签: ruby arrays

在Python中,您可以在搜索列表元素时指定开始和结束索引:

>>> l = ['a', 'b', 'a']
>>> l.index('a')
0
>>> l.index('a', 1) # begin at index 1
2
>>> l.index('a', 1, 3) # begin at index 1 and stop before index 3
2
>>> l.index('a', 1, 2) # begin at index 1 and stop before index 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'a' is not in list

Ruby中有相同的功能吗?你可以使用数组切片,但这似乎效率较低,因为它需要中间对象。

2 个答案:

答案 0 :(得分:1)

Ruby中没有相同的功能。

您可以从数组的开头搜索并使用#index转发到结尾,或者从数组末尾搜索并使用#rindex向后搜索。要从一个任意索引转到另一个索引,您必须首先使用数组切片将数组切割为感兴趣的索引(例如,使用#[])作为OP建议。

答案 1 :(得分:0)

试试这个

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

arr[1,3].include? 2
=> true
arr[1,3].include? 1
=> false