gpt4 book ai didi

list - perl:一次操作中的 grep 和 map

转载 作者:行者123 更新时间:2023-12-05 01:29:18 27 4
gpt4 key购买 nike

有没有办法执行 grep和一个 map在 perl 中的单个操作中?类似于python可以执行列表理解的方式:

files = [{ 'path':'/path/to/file1',
'size':123},
{ 'path':'/path/to/file2',
'size':987},
{ 'path':'/path/file3',
'size':1234},
{ 'path':'/path/to/file4',
'size':543},
{ 'path':'/path/to/my/file5',
'size':1357}]
large_filepaths = [file['path'] for file in files if file['size'] > 1024]

在 Perl 中,我需要做一个 grep过滤掉大文件,然后是 map获得我想要的特定值:
my $files = [ { path=>'/path/to/file1',
size=>123},
{ path=>'/path/to/file2',
size=>987},
{ path=>'/path/file3',
size=>1234},
{ path=>'/path/to/file4',
size=>543},
{ path=>'/path/to/my/file5',
size=>1357} ];
my @large = grep { $_->{size} > 1024 } $files;
my @large_filepaths = map { $_->{path} } @large;

有没有一种简单的方法可以在单个操作中运行它,还是必须使用 2 个语句(或一个复合语句)?

最佳答案

一个声明 map { ... } grep { ... } @$files是执行此操作的“标准”方法,并且与您在 Python 中所做的最接近。

从技术上讲,可以在单个 map 中完成它, 因为 map可以为每个输入值返回任意数量的值,包括零——所以你可以做类似的事情map { $_->{size} > 1024 ? $_->{path} : () } @$files ,但这实际上不太清楚,我一般不推荐它。

关于list - perl:一次操作中的 grep 和 map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44785674/

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