0
例如,给出(1,2,5,6,7),我想确定3和4是否丢失?在Perl中查找列表中缺失的数字
我发现了以下代码实现了我的目标。
#!/usr/bin/perl
use Data::Dumper;
@list= (1,2,5,6,7);
@missing = map $list[$_-1]+1..$list[$_]-1, [email protected];
print Dumper(\@missing);
输出:
$VAR1 = [
3,
4
];
能有人请解释背后上面的代码逻辑?
不知道你在哪里得到了代码,但我与它一个轻微的狡辩。 '@ list-1'最好写成'$#list'。标量上下文中的'@ list'为您提供'@ list'中元素的数量,并从中减去一个,从而为您提供数组中的最后一个索引。但'$#list'是一个特殊的变量,它可以在不需要减法的情况下给出'@ list'中的最后一个索引。它更高效,它更好地表达了你的意图。 –
哦。其实我有另一个代码问题。 '@ list'是数组变量的糟糕名字。它促进了不正确的(但令人沮丧的普遍)的想法,即Perl中的数组和列表是相同的。 –
@DaveCross感谢您的信息。我从这里获取了代码:http://www.perlmonks.org/?node_id=388315 –