【问题标题】:Get all combinations from N arrays从 N 个数组中获取所有组合
【发布时间】:2013-09-30 20:38:00
【问题描述】:

我有数组。

@a=([1,2,3],['b','r','g'],['L','X']);

并且想要得到这样的结果:

@b=(
[1,'b','L'],[1,'b','X'],
[1,'r','L'],[1,'r','X'],
[1,'g','L'],[1,'g','X'],

[2,'b','L'],[2,'b','X'],
[2,'r','L'],[2,'r','X'],
[2,'g','L'],[2,'g','X'],

[3,'b','L'],[3,'b','X'],
[3,'r','L'],[3,'r','X'],
[3,'g','L'],[3,'g','X'],
)

我的输入数组 @a 有 2 到 6 个嵌套数组

不知道如何在cpan上找到这个功能。

【问题讨论】:

标签: arrays perl combinations


【解决方案1】:
use Algorithm::Loops qw( NestedLoops );
my @b; NestedLoops(\@a, sub { push @b, [ @_ ] });

【讨论】:

    【解决方案2】:

    为什么选择 cpan?

    use strict; use warnings;
    use Data::Dumper;
    my @a=([1,2,3],['b','r','g'],['L','X']);
    
    my @b;
    foreach my $i (@{$a[0]}){
        foreach my $c (@{$a[1]}){
            foreach my $k (@{$a[2]}){
                push @b, [$i, $c, $k];
            }
        }
    }
    
    print Dumper(\@b);
    

    【讨论】:

    • 它并不总是 3 个维度。我有 @a 作为输入,它里面有 2 到 6 个数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2015-08-11
    • 1970-01-01
    相关资源
    最近更新 更多