java在循环中删除数组元素,在循环Perl中删除数组中的元素

好吧,这是处理问题的一种方法(在某种程度上我理解你想做什么) . 每当您需要回答有关成员资格的问题时,您可能希望使用哈希值 .

use strict;

use warnings;

my @array1 = ( 11, 22, 33, 44);

my @array2 = ( 11, 2, 3, 44, 5, 44);

my @array3 = (-11, -2, -3, -44, -5, -444);

# Keep track of every value in @array1.

my %vals = map { $_ => 1 } @array1;

my @keep_indexes;

# Go through @array2, either adding the corresponding

# value in @array3 to @array1 or storing the array index.

for my $i (0 .. $#array2) {

if ($vals{$array2[$i]}){

push @array1, $array3[$i];

}

else {

push @keep_indexes, $i;

}

}

# Rebuild @array3 from the indexes that we stored.

# Change this to @array2 if you want to delete from that array instead.

@array3 = map $array3[$_], @keep_indexes;

print join(' ', @array1), "\n"; # 11 22 33 44 -11 -44 -444

print join(' ', @array2), "\n"; # 11 2 3 44 5 44

print join(' ', @array3), "\n"; # -2 -3 -5

我不喜欢这个代码,所以这里有一些警告:

任何时候你编号变量名( @array1 , @array2 等),你都会感到困惑 . 您需要更好的变量名称,或者更可能的是更好的数据结构 .

任何时候你发现自己都在维护并行数组,你应该考虑一个更好的数据结构是否会有所帮助 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值