【问题标题】:Perl array unique elementsPerl 数组唯一元素
【发布时间】:2020-04-14 18:13:54
【问题描述】:

我有一个像下面这样的 perl 数组,我必须提取这个数组的唯一元素。有没有简单的方法可以做到这一点?

Perl> print(Dumper(@uncurled_data))
$VAR1 = '100 200';
$VAR2 = '100 200';
$VAR3 = '300 400';
$VAR4 = '100 200';
$VAR5 = '100 200';
$VAR6 = '300 400';
$VAR7 = '300 400';
$VAR8 = '300 400';

当我这样做时,keys { map { (split /\ /, $_)[0] => 1 } @uncurled_data },我将不得不这样做两次,即数组中的每个元素一次。有没有一种/班轮或简单的方法可以做到这一点?

具有 4 个元素的所需输出数组 100, 200, 300, 400

【问题讨论】:

    标签: arrays perl split numbers uniq


    【解决方案1】:

    首先创建一个列表,列出您想要的独特之处,

    map { split } @uncurled_data
    

    然后使用标准方法来寻找独特的物品。

    use List::Util qw( uniq );
    my @uniq = uniq map { split } @uncurled_data;
    

    my %seen;
    my @uniq = grep { !$seen{$_}++ } map { split } @uncurled_data;
    

    【讨论】:

    • 所需的输出数组,包含 4 个元素 100、200、300、400
    【解决方案2】:

    你也可以这样做:

    my @uniq = sort keys %{+{map {$_ => 1;} map { split } @uncurled_data}};
    

    【讨论】:

      猜你喜欢
      • 2012-04-28
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 2021-02-14
      相关资源
      最近更新 更多