| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- list
- SpringBoot
- input
- 자바문법
- IntelliJ
- HashMap
- html
- Eclipse
- java테스트
- 스프링부트
- 자바
- 단위테스트
- 자바스크립트
- vscode
- 배열
- junit5
- 인텔리제이
- junit
- 문자열
- Visual Studio Code
- Array
- js
- Java
- math
- 테스트자동화
- CSS
- 정규식
- javascript
- ArrayList
- string
- Today
- Total
어제 오늘 내일
[Python 기초] "중복 제거와 정렬을 단 한 줄로!" 파이썬 리스트 완벽 정리 비법 본문
데이터를 다루다 보면 "중복된 데이터를 없애고, 가나다순이나 크기순으로 깔끔하게 정렬해 줘!"라는 요구사항을 정말 많이 받게 됩니다.
이 두 가지 작업을 따로따로 하려면 코드가 길어지겠지만, 파이썬에서는 단 한 줄로 아주 우아하게 해결할 수 있습니다.
상황별로 골라 쓸 수 있는 완벽한 콤보 기술을 알아보겠습니다.
1. 실무 정석: sorted()와 set()의 환상적인 콜라보
가장 기본적이고 파이썬다운(Pythonic) 방법입니다.
중복을 없애는 set()과, 정렬된 새 리스트를 뱉어내는 sorted()를 양파 껍질처럼 겹쳐서 사용합니다.
📌 예제 코드: 기본 오름차순 (작은 것부터 / 가나다순)
raw_data = [5, 2, 9, 1, 5, 2, 3, 9]
# 1. 안쪽의 set(raw_data)가 먼저 실행되어 중복을 날립니다. -> {1, 2, 3, 5, 9}
# 2. 바깥쪽의 sorted()가 그 결과를 받아 정렬된 '리스트'로 만듭니다.
clean_sorted_data = sorted(set(raw_data))
print("원본:", raw_data)
print("중복 제거 + 정렬:", clean_sorted_data)
# 출력: [1, 2, 3, 5, 9]
2. 반대로 정렬하기: 내림차순 (큰 것부터)
만약 1등부터 꼴등 순서로, 혹은 알파벳 Z부터 A 순서로 정렬하고 싶다면 sorted() 함수의 마법의 옵션인 reverse=True를 덧붙여주면 됩니다.
📌 예제 코드: 내림차순 콤보
fruits = ["banana", "apple", "cherry", "apple", "banana"]
# set으로 중복을 없애고, sorted의 reverse=True로 역순 정렬을 지시합니다.
desc_fruits = sorted(set(fruits), reverse=True)
print("내림차순 정렬:", desc_fruits)
# 출력: ['cherry', 'banana', 'apple']
3. 응용편: 내 마음대로 정렬 기준 세우기 (key 옵션)
단순한 크기순이나 알파벳순이 아니라, "중복은 지우되, 글자 길이가 짧은 순서대로 정렬해 줘!"라는 복잡한 조건이 붙는다면 어떻게 할까요?
이때는 sorted()의 또 다른 옵션인 key를 활용합니다.
📌 예제 코드: 글자 길이(len) 순으로 정렬하기
words = ["apple", "kiwi", "banana", "fig", "kiwi", "apple"]
# 1. set(words)로 중복 제거 -> {'fig', 'banana', 'apple', 'kiwi'}
# 2. key=len 옵션을 주어 글자 수가 적은 단어부터 앞으로 오게 정렬
length_sorted_words = sorted(set(words), key=len)
print("글자 길이순 정렬:", length_sorted_words)
# 출력: ['fig', 'kiwi', 'apple', 'banana']
4. ⚠️ 잠깐! .sort()를 쓰면 안 되나요?
파이썬에는 리스트 원본 자체를 섞어버리는 .sort() 메서드도 있습니다. 이걸로 중복 제거와 정렬을 같이 하려면 코드를 두 줄로 나누어 써야 합니다.
data = [3, 1, 2, 3]
# 1. 먼저 중복을 지우고 다시 리스트로 바꿉니다.
data = list(set(data))
# 2. 그 리스트 자체의 정렬 기능을 호출합니다.
data.sort()
이 방식도 틀린 것은 아니지만, 앞서 배운 sorted(set()) 방식이 코드 한 줄로 끝나고 원본 데이터(raw data)도 훼손하지 않고 안전하게 보존할 수 있어서 실무에서는 압도적으로 선호됩니다.
📝 마치며
오늘의 핵심, 이 공식 딱 하나만 기억하시면 됩니다.
⭐ 새_리스트 = sorted(set(원본_리스트)) ⭐
어떤 지저분한 데이터를 만나더라도, 이 한 줄이면 중복 하나 없이 깔끔하게 각 잡힌 리스트를 얻어내실 수 있을 것입니다.
'IT > Python' 카테고리의 다른 글
| [Python] "리스트 안의 리스트?" 2차원 리스트 중복 제거 (1) | 2026.04.17 |
|---|---|
| [Python] "원하는 데이터만 쏙쏙!" 파이썬 정규표현식(Regex) 기초 완벽 가이드 (0) | 2026.04.17 |
| [Python 기초] "똑같은 데이터 다 나와!" 파이썬 리스트 중복 제거 완벽 가이드 (순서 유지 vs 순서 무시) (0) | 2026.04.16 |
| [Python 기초] "뒤죽박죽 데이터 깔끔하게 줄 세우기!" 파이썬 리스트 정렬 (sort vs sorted) (0) | 2026.04.15 |
| [Python 실전 보너스] 18. "100만 줄 엑셀도 1초 컷!" 데이터 분석의 끝판왕, 판다스(Pandas) 찍어 먹기 (2) | 2026.04.15 |