遍历朱莉娅的所有可能性

时间:2019-01-20 02:00:18

标签: julia

如果我想在每对字母上做一些事情,在Julia中可能看起来像这样:

for l1 in 'a':'z'
    for l2 in 'a':'z'
        w = l1*l2
        # ... do something with w ...
    end
end

我想将其推广到任何长度的单词,给定值n指定所需字母的数量。我该如何在Julia中做到最好?

1 个答案:

答案 0 :(得分:5)

您可以使用:

for ls in Iterators.product(fill('a':'z', n)...))
    w = join(ls)
    # ... do something with w ...
end

特别是如果您想将它们收集到一个数组中,可以编写:

join.(Iterators.product(fill('a':'z', n)...))

或将其展平为向量

vec(join.(Iterators.product(fill('a':'z', n)...)))

但是请注意,在大多数情况下,这是不需要的,对于较大的n,最好不要具体化输出,而应如上所述对它进行迭代。