perl - perl 循环遍历多个数组
问题描述
我需要的是遍历未知数量的未知长度的数组。假设我有这些数据
my @aAry = qw ( a b c );
my @bAry = qw ( d );
my @cAry = qw ( e f g h );
可能还有更多。我会为知道数量做的是:
for (my $i = 0; $i < scalar(@aAry); $i++) {
for (my $j = 0; $j < scalar(@bAry); $j++) {
for (my $k = 0; $k < scalar(@cAry); $k++) {
$str = $aAry[$i].'.'.$bAry[$j].'.'.$cAry[$k];
print "${str}\n";
}
}
}
结果将是每个列表中每个项目的所有可能组合,3 宽。
a.d.e , a.d.f, a.d.g, a.d.h, b.d.e, b.d.f, b.d.g, b.d.h, c.d.e, c.d.f, c.d.g, c.d.h
3 个宽(3 个数组)* 4(最宽的数组)= 12 个组合可能有 2 到 10 个数组,宽度可能从 1 到 200 宽,我需要在 N 个 M 宽的数组中生成所有可能的组合 I'我认为我可以将它们全部放入一个多维数组中,然后跳过
my @mdARY = ( qw (a b c)
, qw ( d )
, qw ( e )
);
for ($i = 0; $i < scalar(@mdARY); $i++) {
for ($j = 0; $j < scalar(@{$mdARY[$i]}); $j++) {
但这也行不通。也许递归???
解决方案
推荐阅读
- fortran - Fortran 77 中的错误,使用二维数组从文件中读取数字
- swift - 我打开 VPN 时无法连接到 SQL - Swift
- linux - 具有 8 个通道的 ALSA 捕获流,但打开流为 4
- javascript - 如何在 highcharts-angular 的全屏视图中删除/隐藏导出按钮
- javascript - React Router Link 内的复选框
- swift - 替换 NSStatusBarButton NSView 以禁用活力
- node.js - 无法将响应发送回 nodeJS 中的 index.js
- angular - 如何在 Angular 服务构造函数中抛出异常?
- fortran - Doxygen:如何在 Fortran 模块中引用子程序?
- traveling-salesman - 时间窗的旅行推销员问题