我正在寻找一种与itertools.product
Ruby 中的 Python 具有相同效果的方法。采用以下 Python 代码:
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.
我试图将其翻译成 Ruby:
(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 中所做的那样?