[英]Python: What's the fastest way to zip right to left, and is there no builtin for this?
[英]What is a Ruby equivalent for Python's “zip” builtin?
Python的內置zip
功能是否有Ruby等價物? 如果沒有,做同樣事情的簡潔方法是什么?
一點上下文:當我試圖找到一個干凈的方法來檢查涉及兩個數組時,就會出現這種情況。 如果我有zip
,我可以寫下這樣的東西:
zip(a, b).all? {|pair| pair[0] === pair[1]}
我也接受一種干凈的方式來做這個沒有類似zip
東西(其中“干凈”意味着“沒有明確的循環”)。
Ruby有一個zip功能:
[1,2].zip([3,4]) => [[1,3],[2,4]]
所以你的代碼示例實際上是:
a.zip(b).all? {|pair| pair[0] === pair[1]}
或者更簡潔:
a.zip(b).all? {|a,b| a === b }
你不能這樣做:
a.eql?(b)
編輯添加一個例子:
a = %w[a b c]
b = %w[1 2 3]
c = ['a', 'b', 'c']
a.eql?(b) # => false
a.eql?(c) # => true
a.eql?(c.reverse) # => false
這是來自ruby規范:
it "returns true if other has the same length and each pair of corresponding elements are eql" do
a = [1, 2, 3, 4]
b = [1, 2, 3, 4]
a.should eql(b)
[].should eql([])
end
所以你應該為你提到的例子工作。
如果你不是使用整數,而是自定義對象,我認為你需要覆蓋eql?。
此方法的規范如下:
http://github.com/rubyspec/rubyspec/tree/master/1.8/core/array/eql_spec.rb
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.