我想在 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
大红苹果
大红梨
大红香蕉
大黄苹果
大黄梨
大黄香蕉
大青苹果
大绿梨
大绿香蕉
小红苹果
小红梨
小红香蕉
小黄苹果
小黄梨
小黄香蕉
小青苹果
小绿梨
小绿香蕉
小红苹果
小红梨
小红香蕉
小黄苹果
小黄梨
小黄香蕉
小青苹果
小绿梨
小绿香蕉
关于perl - 在 Perl 中,如何获得多个集合的笛卡尔积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2457096/