数组 – 从Perl中的数组中删除值的最好方法是什么?
发布时间:2020-12-15 21:28:48 所属栏目:大数据 来源:网络整理
导读:数组有很多数据,我需要删除两个元素。 下面是我使用的代码片段, my @array = (1,2,3,4,5,6,9);my $element_omitted = 5;@array = grep { $_ != $element_omitted } @array; 解决方法 如果您已经知道要删除的元素的索引,请使用splice。 Grep工作,如果你正
数组有很多数据,我需要删除两个元素。
下面是我使用的代码片段, my @array = (1,2,3,4,5,6,9); my $element_omitted = 5; @array = grep { $_ != $element_omitted } @array; 解决方法
如果您已经知道要删除的元素的索引,请使用splice。
Grep工作,如果你正在搜索。 如果你需要做很多这些,你将获得更好的性能,如果你保持数组的排序顺序,因为你可以进行二进制搜索找到必要的索引。 如果在上下文中有意义,可以考虑对已删除的记录使用“魔术值”,而不是删除它们,以保存数据移动 – 例如,将删除的元素设置为undef。自然,这有自己的问题(如果你需要知道“活”元素的数量,你需要分开跟踪它,等),但可能值得麻烦,取决于你的应用程序。 编辑实际上,现在我再看一下 – 不要使用上面的grep代码。它将更有效地找到您要删除的元素的索引,然后使用splice来删除它(你累积了所有不匹配的结果的代码..) my $index = 0; $index++ until $arr[$index] eq 'foo'; splice(@arr,$index,1); 这将删除第一次出现。 my @del_indexes = grep { $arr[$_] eq 'foo' } 0..$#arr; 其余的作为一个练习留给读者 – 记住数组在你拼接时改变! 编辑2 John Siracusa正确地指出我在我的例子中有一个错误..修复,对不起。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |