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 –