Perl 数据处理:排序、递归与迭代技巧
1. 排序技巧:Schwartzian 变换
在数据处理中,排序是常见的操作。当我们难以记住数组元素的内容时,可以使用哈希引用。下面是一个使用 FOLDED 键描述排序值的示例:
my @output_data =
map $_->{ORGINAL},
sort { $a->{FOLDED} cmp $b->{FOLDED} }
map { ORIGINAL => $_, FOLDED => "\F$_" },
@input_data;
如果需要多条件排序,Schwartzian 变换同样适用。以下是一个三级排序的示例:
my @output_data =
map $_->[0],
sort {
$a->[1] cmp $b->[1] or
$a->[2] <=> $b->[2] or
$a->[3] cmp $b->[3]
}
map [ $_, lc, get_id($_), get_name($_) ],
@input_data;
为了更清晰地表示,我们可以使用哈希引用并为每个比较级别命名:
map $_->{VALUE},
sort {
$a->{LOWER} cmp $b-&
超级会员免费看
订阅专栏 解锁全文
589

被折叠的 条评论
为什么被折叠?



