times (note: forever as default!) ["a", "b", "c"].cycle { |word| puts word } # => "a", "b", "c", "a", "b" ... forever ["a", "b", "c"].cycle(2) { |word| puts word } # => "a", "b", "c", "a", "b", "c" zip merges elements of multiple arrays [1,3,5].zip([2,4,6]) # => [[1, 2], [3, 4], [5, 6]] partition returns two arrays. First where passed block is true. Second for rest. (1..6).partition? { |i| i.even? } # => [[2, 4, 6], [1, 3, 5]]