我正在尋找一種與Ruby中的Python的itertools.product
具有相同效果的方法。看看下面的Python代碼:Ruby中Python的itertools.product的等價物是什麼?
from itertools import product
chars = []
for i in range(97,123):
chars.append(chr(i))
for a in range(1,3):
for i in product(chars,repeat=a):
s = ''.join(i)
print s
輸出是這樣的:
a, b, c... x, y, z, aa, ab, ac... ax, ay, az, ba, bb, bc.. etc.
我試着翻譯成紅寶石:
(1..2).each do |n|
('a'..'z').to_a.combination(n).each do |c|
s = c.join
puts s
end
end
但輸出是不一樣的。單字符的那些做工精細(AZ),但是當它進入兩個字符的,如我所料不工作:
ab, ac, ad.. ax, ay, az, bc, bd, be
它不產生aa
,ba
或bb
- 因此它出現它產生的所有組合沒有重複字符或東西?
那麼我應該用什麼方法來生成全部像itertools.product
這樣的組合在Python中呢?
'Array#product'和'itertools.product'的主要區別在於Ruby的方法不是函數。這通常是不方便的。 – tokland 2012-04-18 15:54:04