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
。
答案 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;