gpt4 book ai didi

perl - 如何检查 Perl 数组是否包含特定值?

转载 作者:行者123 更新时间:2023-12-03 04:07:47 24 4
gpt4 key购买 nike

我正在尝试找出一种方法来检查数组中是否存在值,而无需迭代数组。

我正在读取参数文件。我有一长串我不想处理的参数。我将这些不需要的参数放在数组 @badparams 中。

我想读取一个新参数,如果它不存在于@badparams中,则处理它。如果它确实存在于 @badparams 中,请转到下一个读取。

最佳答案

最佳通用 - 特别是短数组(1000 个项目或更少)和不确定哪种优化最适合其需求的编码人员。

# $value can be any regex. be safe
if ( grep( /^$value$/, @array ) ) {
print "found it";
}

有人提到,即使数组中的第一个值匹配,grep 也会传递所有值。这是事实,但是 grep 在大多数情况下仍然非常快。如果您谈论的是短数组(少于 1000 个项目),那么大多数算法无论如何都会非常快。如果您正在谈论非常长的数组(1,000,000 个项目),无论该项目是数组中的第一个、中间还是最后一个项目,grep 的速度都可以接受。

较长数组的优化案例:

如果您的数组已排序,请使用“二分搜索”。

如果同一个数组被重复搜索多次,则先将其复制到哈希中,然后检查哈希。如果内存是一个问题,那么将每个项目从数组移动到哈希中。内存效率更高,但会破坏原始数组。

如果在数组中重复搜索相同的值,则延迟构建缓存。 (当搜索每个项目时,首先检查搜索结果是否存储在持久散列中。如果在散列中找不到搜索结果,则搜索数组并将结果放入持久散列中,以便下次我们在哈希中找到它并跳过搜索)。

注意:这些优化仅在处理长数组时才会更快。不要过度优化。

关于perl - 如何检查 Perl 数组是否包含特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860226/

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