Thursday, April 05, 2007
Perl 펄] 배열에서 중복된 요소 제거, 동일 데이터 지우기; Unique Elements
배열의 각 요소들은 같은 값이 여러 개 중복되어 있을 수 있습니다. 동일한 값의 요소들을 모두 하나로 합치는 방법입니다. 즉 배열을 최적화하는 것입니다.
아래의 uniqueElements() 함수로 이런 작업을 할 수 있습니다.
스크립트 파일명: example.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
대소문자 구분 없이, 고유 요소 구하기: ▶▶ Perl 펄] 영문 배열 고유 요소만 구하기, 대소문자 구분 없이; Unique Elements Ignore Case
숫자 배열의 고유 숫자를 구하는 법도 똑같습니다: ▶▶ Perl 펄] 배열의 중복된 숫자 제거, 동일 값 지우기; Array Unique Number
아래의 uniqueElements() 함수로 이런 작업을 할 수 있습니다.
배열(Array)의 같은 값 삭제, 단일화 예제
스크립트 파일명: example.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#!/usr/bin/perl
use strict; use warnings;
my @names = qw/ 맹구 강수정 배용준 땡칠이 장동건 이효리 이효리 강수정 송혜교 고은아 이효리 /;
# 중복된 요소 있는 원본 배열 출력
print "$_ " foreach (@names);
# 출력 결과: 맹구 강수정 배용준 땡칠이 장동건 이효리 이효리 강수정 송혜교 고은아 이효리
# 원본과 똑같이, 강수정과 이효리가 중복되어 있음
print "\n\n\n"; # 줄바꿈
# 중복된 요소 모두 삭제하고 출력
@names = uniqueElements(@names);
print "$_ " foreach (@names);
# 출력 결과: 맹구 강수정 배용준 땡칠이 장동건 이효리 송혜교 고은아
# 이제 강수정과 이효리가 한번씩만 들어 있음
# 주어진 배열에서, 중복되는 요소들을 모두 삭제하고 리턴하는 함수
sub uniqueElements {
my ($item, %seen, @result);
foreach $item (@_) {
push(@result, $item) unless $seen{$item}++;
}
return @result;
}
use strict; use warnings;
my @names = qw/ 맹구 강수정 배용준 땡칠이 장동건 이효리 이효리 강수정 송혜교 고은아 이효리 /;
# 중복된 요소 있는 원본 배열 출력
print "$_ " foreach (@names);
# 출력 결과: 맹구 강수정 배용준 땡칠이 장동건 이효리 이효리 강수정 송혜교 고은아 이효리
# 원본과 똑같이, 강수정과 이효리가 중복되어 있음
print "\n\n\n"; # 줄바꿈
# 중복된 요소 모두 삭제하고 출력
@names = uniqueElements(@names);
print "$_ " foreach (@names);
# 출력 결과: 맹구 강수정 배용준 땡칠이 장동건 이효리 송혜교 고은아
# 이제 강수정과 이효리가 한번씩만 들어 있음
# 주어진 배열에서, 중복되는 요소들을 모두 삭제하고 리턴하는 함수
sub uniqueElements {
my ($item, %seen, @result);
foreach $item (@_) {
push(@result, $item) unless $seen{$item}++;
}
return @result;
}
대소문자 구분 없이, 고유 요소 구하기: ▶▶ Perl 펄] 영문 배열 고유 요소만 구하기, 대소문자 구분 없이; Unique Elements Ignore Case
숫자 배열의 고유 숫자를 구하는 법도 똑같습니다: ▶▶ Perl 펄] 배열의 중복된 숫자 제거, 동일 값 지우기; Array Unique Number
tag: perl
Perl | 펄
<< Home