如果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. 在Ruby中鏈接流函數的最簡潔的方法是什麼?
- 3. 獲取多維數組校驗和的最簡潔方法是什麼?
- 4. 使用sqlite3在Python中獲取blob的最簡潔的方法是什麼?
- 5. Java中最簡潔的方法是從「AlphaSuffix」中獲取「Alpha」?
- 6. 什麼是從數組集合中獲取數組值的最簡單/最好的方法?
- 7. 在C#中獲取OutOfMemoryException的最簡單方法是什麼?
- 8. CUDA:獲取數組中的最大值及其索引
- 9. 在Ruby中將Oracle結果集導入可打印數組的最簡潔方法是什麼?
- 10. 在數據庫中存儲差異的最簡潔方法是什麼?
- 11. 什麼是在OnInit()中獲取控件值的最佳方法?
- 12. 在C#中從AD獲取主組名的最簡單方法是什麼?
- 13. 在Java中獲取數據庫元數據的最簡單方法是什麼?
- 14. 從最小y值的元組中獲取最大x值的最快方法?
- 15. 什麼是最簡潔的方式來轉換JavaScript「幾乎數組」到「數組」?
- 16. 綁定枚舉屬性的最簡潔方法是什麼?
- 17. 獲取一組對象的兩個屬性的最小值和最大值的最有效方法是什麼
- 18. 什麼是傳遞多個鏈接數組作爲方法參數的最佳/最簡潔的方式?
- 19. 確定字符串是否有值的最簡潔的方法是什麼?
- 20. 什麼是Ruby的Dir.glob()最簡潔的Clojure等價物?
- 21. 獲取Spark數據框列中最大值的最佳方法
- 22. 數據綁定時呈現方法結果的最簡潔方法是什麼?
- 23. 什麼是最簡單的方法來索引(搜索索引)70,000個節點?
- 24. 獲取數組中最大整數的索引
- 25. 在PHP中檢查鏈接返回值的最簡潔的語法是什麼?
- 26. 什麼是從另一個字符串數組中獲取字符串數組索引的最快方法C#
- 27. 在SQL Server中獲取代碼行數(LOC)的最簡單方法是什麼?
- 28. 在C中測試空值的最簡單方法是什麼?
- 29. 是一種更簡潔的方式來獲取數組數組中的最高值嗎?
- 30. 在C中抓取網頁的最簡單方法是什麼?
我想你已經明白了。什麼是非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