15、Perl 数据处理:排序、递归与迭代技巧

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-&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值