我想在Perl中进行置换。例如,我有三个数组:["big", "tiny", "small"],然后有["red", "yellow", "green"]["apple", "pear", "banana"]

如何得到:

[“大”,“红色”,“苹果”]
[“大”,“红色”,“梨”]

..等等..

[“小”,“绿色”,“香蕉”]

我了解这称为置换。但是我不确定该怎么做。我也不知道我可以有多少个数组。可能有三四个,所以我不想做嵌套循环。

最佳答案

实际上,这不是排列,而是Cartesian product。请参见Math::Cartesian::Product

#!/usr/bin/perl

use strict; use warnings;

use Math::Cartesian::Product;

cartesian { print "@_\n" }
    ["big", "tiny", "small"],
    ["red", "yellow", "green"],
    ["apple", "pear", "banana"];


输出:

C:\ Temp> uu
大红苹果
大红梨
大红色香蕉
大黄苹果
大黄梨
大黄香蕉
大青苹果
大绿梨
大绿色香蕉
小小的红苹果
小小的红梨
小小的红色香蕉
小小的黄色苹果
小黄梨
小小的黄色香蕉
小小的青苹果
小小的绿色梨
小小的绿色香蕉
小红苹果
小红梨
小红香蕉
小黄苹果
小黄梨
小黄香蕉
小青苹果
小绿梨
小绿色香蕉

10-08 19:07