gpt4 book ai didi

perl - 哈希如何用于查找唯一项目

转载 作者:行者123 更新时间:2023-12-04 18:16:13 25 4
gpt4 key购买 nike

我看过一个简单的程序。好吧,除了一件事,我理解的洞程序就是哈希在这里的工作方式:

程序 -> 从列表中提取唯一元素

@list = (20,30,40,60,40,20,30,2);
@uniq = ();
%seen = ();
foreach $item (@list) {
unless ($seen{$item})
{
# if we get here, we have not seen it before
push(@uniq, $item);
$seen{$item}++;

}
print %seen;
print"\n";
}

我的问题是哈希如何从其现有值与当前值进行比较,即它如何检查天气该值是否已经存在。如果我正在打印 %seen 我得到了一些值。这些值是如何来的?

最佳答案

如果它让您更清楚,请更改

if (!$seen{$item}) { $seen{$item}++; ... }


if (!exists($seen{$item})) { $seen{$item} = 1; ... }

当你第一次遇到一个特定的项目时,它在哈希中不作为键存在,所以 if被输入。 if的正文在哈希中创建一个等于项目的键。

第二次(第三次和...)遇到特定项目时,它作为键存在于哈希中,因此 if未输入。

顺便一提,
if (!$seen{$item}) { $seen{$item}++; ... }

可以缩短为
if (!$seen{$item}++) { ... }


my @uniq;
for my $item (@list) {
push @uniq, $item if ...;
}

可以缩短为
my @uniq = grep ..., @list;

所以整个事情可以写成
my @list = (20,30,40,60,40,20,30,2);
my %seen;
my @uniq = grep !$seen{$_}++, @list;

关于perl - 哈希如何用于查找唯一项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11653254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com