我正在寻找一种在Ruby中具有与Python的
那会输出如下内容:
我尝试将其翻译为Ruby代码:
itertools.product
相同效果的方法。请看以下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
但输出结果并不相同。一个字符的正则表达式可以正常工作(a-z),但当它变成两个字符时,就不能按我期望的方式工作:
ab, ac, ad.. ax, ay, az, bc, bd, be
它没有生成aa
、ba
或bb
- 所以看起来它生成了所有不重复字符组合吗?
那么我应该使用什么方法来生成所有的组合,就像Python中的itertools.product
一样?
Array#product
和itertools.product
之间的关键区别在于 Ruby 的是一个方法而不是函数。这通常是一种不便。 - tokland