Perl 刪除陣列中重複元素

2022-03-08 06:58:05 字數 1125 閱讀 5588

寫乙個小程式時候,需要去除乙個陣列中的重複元素,搜尋了一下,找到的**主要是兩種,一種是使用grep函式,一種是轉換為hash表,**分別如下:

使用grep函式**片段:

**:

my @array = ( 'a', 'b', 'c', 'a', 'd', 1, 2, 5, 1, 5 );

my %count;

my @uniq_times = grep < 2; } @array;

使用轉換hash**片段:

**:

my @array = ( 'a', 'b', 'c', 'a', 'd', 1, 2, 5, 1, 5 );

my %saw;

@saw = ( );

my @uniq_array = sort keys %saw;

使用grep那種方法並不是很好懂,我嘗試解釋一下,未必說得清楚或者正確。其實就是把陣列的每個元素作為乙個hash表的key,++之後第乙個元素出現的時候值就是1,如

果第二次出現這個值就是2了。其實就是統計了陣列每個元素的出現次數,少於2次的就放到新的陣列當中。我寫了個比較好懂的**,和使用grep方法的**原理大致相同,但是又不完全一

樣,**如下:

**:

my @array = ( 'a', 'b', 'c', 'a', 'd', 1, 2, 5, 1, 5 );

my %count_hash;

my @uniq_array;

foreach my $value ( @array )

) )else

= 1;

push( @uniq_array, $value );}}

#

!/usr/bin/perl

usestrict;

my%hash;my

@array = (1..10,5,20,2,3,4,5,5);#

grep 儲存符合條件的元素

@array = grep < 2 } @array

;print

join("

",@array

);print"n

";

刪除陣列重複元素

問題描述 已有一維陣列,儲存不超過100個整型資料,其中有些元素的值存在重複,從陣列中刪除所有重複的元素 每個元素只保留乙個 並輸出結果陣列。輸入說明 使用者可輸入多組資料,每組資料由兩行組成 第一行 陣列元素的個數n 第二行 n個陣列元素,由空格分隔 輸出說明 對於每組輸入,輸出最後的結果,整數之...

php array flip 刪除陣列重複元素

在 中,用於刪除陣列中重複元素有乙個可用的函式,那就是 array unique 但是它並不是乙個最高效的方法,使用array flip 函式將比array uniqure 在速度上高出五倍左右。方法如下 arr array 假設有一萬個元素的陣列,裡面有重複的元素。arr array flip a...

55 刪除陣列重複元素

55 刪除陣列重複元素 問題描述 已有一維陣列,儲存不超過100個整型資料,其中有些元素的值存在重複,從陣列中刪除所有重複的元素 每個元素只保留乙個 並輸出結果陣列。輸入說明 使用者可輸入多組資料,每組資料由兩行組成 第一行 陣列元素的個數n 第二行 n個陣列元素,由空格分隔 輸出說明 對於每組輸入...