반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- CSS
- junit
- 스프링부트
- SpringBoot
- js
- Visual Studio Code
- 문자열
- junit5
- 정규식
- IntelliJ
- 인텔리제이
- string
- ArrayList
- javascript
- list
- java테스트
- Java
- 자바스크립트
- input
- html
- Eclipse
- Array
- 자바
- math
- 자바문법
- vscode
- 배열
- 단위테스트
- 테스트자동화
- HashMap
Archives
- Today
- Total
어제 오늘 내일
[Python 기초] "누가 빠졌지?" 리스트 차집합 찾기 및 데이터 대조 본문
두 명단을 비교해서 "한쪽에는 있지만 다른 쪽에는 없는" 데이터를 찾아내는 방법들을 정리해 드릴게요.
1. 가장 쉽고 빠른 방법: 빼기() 연산자
집합(set) 자료형은 우리가 숫자를 빼는 것과 똑같은 - 기호를 지원합니다. 앞의 집합에서 뒤의 집합과 겹치는 부분(교집합)을 덜어내고 남은 것만 보여줍니다.
📌 예제 코드: '-' 기호로 누락 데이터 찾기
all_students = ["철수", "영희", "민수", "지훈", "수진"]
submitted = ["영희", "수진"]
# 1. 집합으로 변환
set_all = set(all_students)
set_sub = set(submitted)
# 2. 전체 명단에서 제출자 명단을 뺍니다.
not_submitted = set_all - set_sub
print("미제출자:", list(not_submitted))
# 출력: ['철수', '민수', '지훈'] (순서는 바뀔 수 있음)
2. 가독성을 높이는 방법: 함수
기호 대신 이름을 사용하는 방식입니다. 역시나 협업 환경에서 "차집합을 구한다"는 의도를 명확히 전달할 때 좋습니다.
📌 예제 코드: difference 함수 활용
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
# list1에는 있지만 list2에는 없는 요소들
diff = list(set(list1).difference(list2))
print("차집합 결과:", diff)
# 출력: [1, 2, 3]
3. 순서를 유지해야 할 때: 리스트 컴프리헨션
차집합 역시 set을 쓰면 순서가 뒤섞입니다. 만약 "전체 명단에 적힌 순서 그대로" 빠진 사람을 보고 싶다면 리스트 컴프리헨션을 사용하세요.
📌 예제 코드: 순서 유지 차집합
total_list = ["A", "B", "C", "D", "E"]
remove_list = ["B", "D"]
# remove_list를 set으로 미리 바꿔두면 검색 속도가 훨씬 빨라집니다 (필수 꿀팁!)
set_remove = set(remove_list)
# total_list에서 하나씩 꺼내는데, 그게 remove_list에 '없는(not in)' 경우만 모으기
result = [item for item in total_list if item not in set_remove]
print("순서 유지 결과:", result)
# 출력: ['A', 'C', 'E']
📝 요약 및 실무 팁
- 빠른 비교가 필요할 때:
set_a - set_b - 원본 순서가 중요할 때:
[x for x in list_a if x not in set_b]
🔥 실무 꿀팁:
데이터 대조를 할 때 대소문자가 섞여 있으면 파이썬은 서로 다른 데이터로 인식합니다 ("Apple"과 "apple"은 다름). 이럴 땐 리스트를 집합으로 만들기 전에 모든 요소를 소문자로 바꾸는 과정이 필요합니다.
# 모든 요소를 소문자로 통일한 뒤 차집합 구하기
list_a = [x.lower() for x in list_a]
list_b = [x.lower() for x in list_b]
diff = set(list_a) - set(list_b)
반응형
'IT > Python' 카테고리의 다른 글
| [Python 기초] "세 줄 코드를 한 줄로!" 리스트 컴프리헨션 완벽 이해 (0) | 2026.05.24 |
|---|---|
| [Python 기초] "따로 노는 리스트를 하나로 묶자!" zip() 함수 활용법 (0) | 2026.05.24 |
| [Python 기초] "겹치는 데이터만 골라내자!" 리스트 교집합 찾기 3가지 비법 (0) | 2026.05.22 |
| [Python 기초] "흩어진 데이터를 하나로!" 파이썬 리스트 합치기 4가지 방법 (0) | 2026.05.21 |
| [Python 기초] "원하는 곳만 골라서 반전!" 리스트 부분 슬라이싱 및 뒤집기 (0) | 2026.05.19 |
Comments
