gpt4 book ai didi

perl - Perl 中单数组的多维数组输入

转载 作者:行者123 更新时间:2023-12-05 09:29:58 24 4
gpt4 key购买 nike

我有以下输入和预期的输出。

Input : [undef,[0,1],2]
Expected Output : [0,1,2]

我写的代码:

use Data::Dumper;
my $input=[undef,[0,1],2];
my @arr=@{$input};
@arr = grep {defined} @arr;
my @arrnew;
foreach my $value (@arr){
if (ref $value eq 'ARRAY') {
push @arrnew,@{$value};
} else {
push @arrnew,$value;
}
}
print Dumper(@arrnew);

问题:虽然,这给了我正确的输出,但我想知道在 perl 中是否有更简单的方法。

最佳答案

您可以使用 map 将其全部整合到一个表达式中和 grep .

use strict;
use warnings;

my $foo = [undef,[0,1],2];
my @bar = map { ref eq 'ARRAY' ? @$_ : $_ } grep defined, @$foo;

map 就像您的 foreach 循环并在输出时生成一个新列表,该列表被分配给一个新数组 @bar .您已经使用过的 grep,但我已将其更改为使用表达式语法而不是 block 语法。

请注意,这仅适用于一层深度。

关于perl - Perl 中单数组的多维数组输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70158802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com