我正在寻找一种与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