在Perl中使用'unique'时如何从数组中查找'non-unique'值

时间:2018-10-18 18:29:17

标签: string perl unique

my @words = qw(1 2 3 4 4);
my @unique_words = uniq @words;

print @unique_words; # 1 2 3 4

我有兴趣找出哪个值不唯一,在这种情况下为4。并能够将其设置为等于变量,这样我就可以跟踪重新出现哪个特定值。

我想这样做,因此我可以实现一个代码,说明“如果我的字符串包含与数组中的重复值,则从字符串中完全删除与数组中的重复值”。在这种情况下,如果字符串包含1 2 3 4 4。我希望if语句后包含1 2 3

1 个答案:

答案 0 :(得分:2)

计数/查找重复项最简单的方法是使用散列:

my %count;
$count{ $_ }++ for @words;
print "$_ occurs more than once\n"
    for grep { $count{ $_ } > 1 } @words;

通过在%count中查找计数为1的元素来查找仅出现一次的值。

my %count;
$count{ $_ }++ for @words;
my @unique_words = grep { $count{ $_ } == 1 } @words;