안녕하세요. 신기한 연구소입니다.
파이썬 프로그래밍에서 사용하는 자료구조의 한 종류인 파이썬 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으로 변환해주니 오류 없이 잘 처리된 기억이 있습니다.
그래서 데이터 구조를 잘 이해하고 적절하게 사용하는 것은
개발하는데 중요한 역할을 합니다.
그래도 버그 없는 프로그램은 없어요.
유지보수팀이 필요한 이유이기도 하고요.
잘못된 정보나 수정이 필요하면 댓글 주세요.
아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.
'Software > Python(파이썬)' 카테고리의 다른 글
[HOW]파이썬 프로그래밍에서 함수 만드는 방법, Python Function 왕초보 (0) | 2020.10.13 |
---|---|
[HOW]파이썬 프로그래밍 딕셔너리 자료형 사용하는 방법, Python Dictionaries 왕초보 (0) | 2020.10.12 |
[HOW]Python Tuple(튜플) 사용하는 방법, 파이썬 프로그래밍 자료구조, 왕초보 (0) | 2020.10.10 |
[HOW]Python range() 파이썬 프로그래밍 range()함수 사용하는 방법, 왕초보 버전 (0) | 2020.10.09 |
[HOW]파이썬 프로그래밍 기초 반복문 for문 사용하는 방법, Python - 왕초보 (0) | 2020.10.08 |