如果a
是数组,我想要a.index(a.max)
,但更像Ruby。这应该是显而易见的,但我无法在其他地方找到答案。显然,我是Ruby的新手。在Ruby中,获取数组中最大值索引的最简洁方法是什么?
43
A
回答
99
2
14
在红宝石1.9.2我可以做到这一点;
arr = [4, 23, 56, 7]
arr.rindex(arr.max) #=> 2
+0
这基本上是不需要的原始解决方案的更糟糕的版本。 – MegaTom 2017-05-17 18:26:45
6
这里是我的想法来回答这个问题:
a = (1..12).to_a.shuffle
# => [8, 11, 9, 4, 10, 7, 3, 6, 5, 12, 1, 2]
a.each_index.max_by { |i| a[i] }
# => 9
1
这里是一种方式来获得,如果超过一个的最高值的所有索引值。
考虑:
> a
=> [1, 2, 3, 4, 5, 6, 7, 9, 9, 2, 3]
你可以找到所有的最高值由指数(或任何给定值):
> a.each_with_index.select {|e, i| e==a.max}.map &:last
=> [7, 8]
1
只是想记下一些行为和性能差异这里的解决方案。在“平局决胜”的行为重复最大要素:
a = [3,1,2,3]
a.each_with_index.max[1]
# => 3
a.index(a.max)
# => 0
出于好奇,我在Benchmark.bm
跑到他们两个(上面的a
):
user system total real
each_with_index.max 0.000000 0.000000 0.000000 ( 0.000011)
index.max 0.000000 0.000000 0.000000 ( 0.000003)
于是我产生了新的a
与Array.new(10_000_000) { Random.rand }
and reran the test:
user system total real
each_with_index.max
2.790000 0.000000 2.790000 ( 2.792399)
index.max 0.470000 0.000000 0.470000 ( 0.467348)
这让我觉得除非你特别需要选择较高的指数最大值,a.index(a.max)
是更好的选择。
相关问题
- 1. 在Ruby中设置全名的最简洁方式是什么?
- 2. 从MutationRecord获取nextElementSibling(previousElementSibling)的最简洁方法是什么?
- 3. 在Ruby中链接流函数的最简洁的方法是什么?
- 4. 获取多维数组校验和的最简洁方法是什么?
- 5. 使用sqlite3在Python中获取blob的最简洁的方法是什么?
- 6. 在java中获取数组索引的最佳方法是什么?
- 7. 在Ruby中获取Lisp样式(+ *参数)的最简单方法是什么?
- 8. Java中最简洁的方法是从“AlphaSuffix”中获取“Alpha”?
- 9. 在Ruby中读取大文件的最快方法是什么?
- 10. 在java数组中获取n个最大值的索引
- 11. 什么是从数组集合中获取数组值的最简单/最好的方法?
- 12. 找到与模式匹配的numpy数组中所有条目的索引的最简洁方法是什么?
- 13. 确保一组值都是唯一的最简洁的方法是什么?
- 14. 在C#中获取OutOfMemoryException的最简单方法是什么?
- 15. CUDA:获取数组中的最大值及其索引
- 16. 在Ruby on Rails的index.html.erb上实现cancancan的最简洁方法是什么?
- 17. 在Ruby中执行XMLHttpRequest的最简单方法是什么?
- 18. 在Ruby中将Oracle结果集导入可打印数组的最简洁方法是什么?
- 19. 在数据库中存储差异的最简洁方法是什么?
- 20. PHP中用于测试数组键是否存在并保存其值的最简洁方法是什么?
- 21. 什么是在OnInit()中获取控件值的最佳方法?
- 22. 在C#中从AD获取主组名的最简单方法是什么?
- 23. 什么是最好的方法索引到数组
- 24. 什么是使用AJAX修改DOM的最简洁的方法
- 25. 在Java中获取数据库元数据的最简单方法是什么?
- 26. 从最小y值的元组中获取最大x值的最快方法?
- 27. 什么是在随机数组中找到最大数字的最佳方法?
- 28. 什么是最简洁的方式来转换JavaScript“几乎数组”到“数组”?
- 29. 搜索Ruby数组以获得VALUE的最简单方法是什么? (并删除特定的数组元素)
- 30. 绑定枚举属性的最简洁方法是什么?
我想你已经明白了。什么是非rubylike? – Ben 2010-01-27 19:52:27
本,我正在寻找像a.max_index。猜测它不是内置的。 – 2010-01-29 18:28:51
即使你想要的函数没有内置,你仍然可以在'Array'类中添加一个'.max_index'成员。以下是使用自定义成员来扩展'String'或'Integer'的示例:http://www.hawkee.com/snippet/1260/ – bta 2010-01-29 22:58:48