반응형

안녕하세요. 신기한 연구소입니다.

파이썬 프로그래밍에서 사용하는 자료구조의 한 종류인 파이썬 Sets에 대해 알아볼게요.

프로그래머가 되고 싶다면 자료를 잘 다루는 게 중요합니다.

적정한 타입과 사이즈를 정해야 오류를 줄일 수 있거든요.

 

Sets 타입 (집합)

파이썬 Sets는 우선 정렬이 안되어 있으며 중복 값을 허용하지 않습니다.

우리말로 집합이라는 뜻인데..

데이터를 묶는다는 의미이며 묶은 데이터 집합끼리 데이터 처리를 할 수 있습니다.

 

파이썬 Set 자료형은 2가지 방식으로 생성합니다.

첫 번째 방법은 { }를 사용하는 방법입니다.

howToMakeSet1을 보시면 콤마로 구분된 데이터를 { }로 감싸고 있습니다.

 

생성한 set 형태로 조회는 되었습니다.

하지만 정렬이 만들 때와 다릅니다.

또한 'red'가 두 개인데 하나로 나옵니다. 

정렬되지도 않고 중복도 허용되지 않음을 확인했습니다.

 

두 번째 방법은 set()을 이용하는 방법입니다.

howToMakeSet2는 문자열로 만들었고,

howToMakeSet3는 튜플을 사용했는데 1개의 값이 있습니다.

 

결과는 역시 글자 하나를 값으로 만들면서 중복된 값은 제거하고 순서는 엉망이 되었네요. ㅎㅎ

튜플로 만들 때 ('helloworld',)로 만들어도 같은 값이 나옵니다.

 

하지만 튜플도 2개 이상의 값을 넣으면 각각 하나씩 set 집합으로 구성됩니다.

 

파이썬 set에서 list를 사용하면 값이 한 개라도 글자 단위로 분해하지 않고

그대로 set집합을 구성합니다.

 

howToMakeSet4와 howToMakeSet5의 결과를 확인해 보면 됩니다.

{'a', 'helloworld'}와 {'12345'}가 나왔습니다.

 

howToMakeSet6의 경우는 int 값을 넣었습니다.

set은 반복되는 객체가 아닌 int를 지원하지 않기에 오류가 발생합니다.

 

위 예제는 파이썬 set의 멤버십 테스트입니다.

set 집합 안에 해당 값이 있는지 테스트하는 구문입니다. 

in을 사용했습니다.

 

 

파이썬 set은 집합입니다.

그렇다면 합집합, 교집합, 마이너스 등 연산이 가능합니다.

 

교집합은 & 또는 intersection을 사용합니다. 양쪽에 다 있는 항목을 찾습니다.

합집합은 | 또는 union을 사용합니다. 두 집합을 다 합친 뒤 중복 값을 제거합니다.

차집합은 - 또는 difference를 사용합니다. 앞의 집합에서 뒤의 집합을 뺍니다.

역 교집합은 ^를 사용하며 양쪽에 다 있는 항목을 제외한 항목을 찾습니다.

 

'가나다라'로 파이썬 set 집합을 만들었습니다.

 add 함수를 사용해서 set 집합에 '바'를 추가할 수 있습니다.

결과를 보니 두 번째에 추가되었네요.

 

 remove 함수를 사용해서 '바'를 삭제할 수 있습니다.

 

update 함수로 '바사아'를 추가할 수 있습니다.

 

add와 update는 둘 다 set에 데이터를 추가할 수 있는데

add는 1개만, update는 여러 개를 동시에 추가할 수 있는 점이 다릅니다.

 

마지막으로 set을 이용해 빈 집합을 만드는 방법은

set()을 사용하면 됩니다. 

{}는 빈 집합이 아닙니다. 다음에 공부할 딕셔너리와 관계가 있답니다.

파이썬 set의 기능에 대해 알아봤습니다.

 

연말정산 신고를 하던 중 프로그램 오류가 발생했던 적이 있습니다.

업무팀에서 문의가 온 건데..

엑셀로 저장해서 합을 구하면 잘 나오는데

화면에서는 자꾸 다른 금액이 나오고 금액이 다르다고 진행이 안된다는 문의였습니다.

기존에 계속 문제없이 사용하던 프로그램이라 좀 의아했지만..

분명 잘못된 부분이 있기에 오류가 난 것입니다.

그래서 먼저 업무팀에 작년과 달라진 점을 물었습니다.

업무적으로 크게 달라진 건 없다고 하네요.

하지만 올해 금액이 다른 해에 비해 많다고 하더군요.

그 말을 듣는 순간 갑자기 생각나는 게 있었답니다.

바로 데이터 타입입니다.

금액 단위가 더 커지면서 혹시 사이즈 오보가 된 거 아닐까 확인하니

int로 되어 있더군요.

21억 4748만 3647 까지만 지원되는데 그 금액을 넘어버린 거였습니다.

지난해까지는 21억을 넘은 적이 없었던 거였고요. ㅎㅎ

그래서 사이즈를 long으로 변환해주니 오류 없이 잘 처리된 기억이 있습니다.

그래서 데이터 구조를 잘 이해하고 적절하게 사용하는 것은

개발하는데 중요한 역할을 합니다.

그래도 버그 없는 프로그램은 없어요.

유지보수팀이 필요한 이유이기도 하고요.

 

잘못된 정보나 수정이 필요하면 댓글 주세요.

아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.

반응형