파이썬

리스트 중복 제거

ghiott 2025. 3. 27. 18:00
반응형

📌 메타 설명

Python 리스트에서 중복된 요소를 제거하면서 순서를 유지하는 방법을 알아봅니다.
반복문과 리스트를 활용하여 효율적인 중복 제거 코드를 작성해 보세요!


1. Python 리스트에서 중복 제거하기

Python에서 리스트를 다룰 때 중복된 요소를 제거하고, 원래 순서를 유지해야 하는 경우가 많습니다.
기본적으로 set()을 사용하면 중복을 쉽게 제거할 수 있지만, 순서가 유지되지 않는 문제가 발생합니다.

💡 이 글에서는 중복을 제거하면서도 리스트의 원래 순서를 유지하는 방법을 소개합니다! 🚀


2. Python 코드: 중복 제거 후 순서 유지하기

아래 코드에서는 반복문을 사용하여 리스트에서 중복을 제거하면서 순서를 유지합니다.

# 중복이 포함된 리스트
numbers = [1, 2, 2, 3, 4, 4, 5, 6, 6]

# 중복 없는 리스트 생성
unique_numbers = []

# 리스트를 순회하며 중복 제거
for num in numbers:
    if num not in unique_numbers:
        unique_numbers.append(num)

# 결과 출력
print("중복 제거된 리스트 (순서 유지):", unique_numbers)

3. 코드 설명

1️⃣ 기존 리스트 생성

  • numbers = [1, 2, 2, 3, 4, 4, 5, 6, 6]
  • 중복된 요소가 포함된 리스트입니다.

2️⃣ 빈 리스트 생성 (중복 없는 리스트 저장용)

  • unique_numbers = []
  • 중복되지 않은 숫자만 저장할 새로운 리스트를 만듭니다.

3️⃣ 반복문을 이용한 중복 제거

  • for num in numbers:
    • 기존 리스트를 하나씩 순회하면서 확인합니다.
  • if num not in unique_numbers:
    • unique_numbers에 해당 숫자가 없다면 추가합니다.
    • 이 과정에서 처음 등장한 숫자만 저장되며, 이후 중복된 값은 무시됩니다.

4️⃣ 결과 출력

  • print("중복 제거된 리스트 (순서 유지):", unique_numbers)
  • 중복이 제거된 리스트를 출력합니다.

4. 실행 예제

중복 제거된 리스트 (순서 유지): [1, 2, 3, 4, 5, 6]

🎯 중복된 숫자가 제거되었고, 리스트의 원래 순서는 유지되었습니다!


5. set()을 사용한 중복 제거 (순서 유지 불가능)

중복 제거만 필요하고 순서는 중요하지 않다면 set(집합) 자료형을 사용할 수 있습니다.

numbers = [1, 2, 2, 3, 4, 4, 5, 6, 6]
unique_numbers = list(set(numbers))
print("중복 제거된 리스트 (순서 X):", unique_numbers)

⚠ 실행 결과 (순서가 바뀜)

중복 제거된 리스트 (순서 X): [1, 2, 3, 4, 5, 6]

💡 set을 사용하면 중복은 제거되지만, 리스트의 원래 순서가 유지되지 않습니다! 🚨
따라서 순서를 유지하면서 중복을 제거하려면 리스트를 이용한 방법이 필요합니다.


6. dict.fromkeys()를 이용한 중복 제거 (Python 3.7+)

Python 3.7부터는 딕셔너리(dict)가 삽입 순서를 유지하므로, 이를 활용할 수도 있습니다.

numbers = [1, 2, 2, 3, 4, 4, 5, 6, 6]
unique_numbers = list(dict.fromkeys(numbers))
print("중복 제거된 리스트 (순서 유지):", unique_numbers)

실행 결과

중복 제거된 리스트 (순서 유지): [1, 2, 3, 4, 5, 6]

💡 더 간결한 코드로 순서를 유지하면서 중복을 제거할 수 있습니다! 🚀


7. 리스트 컴프리헨션을 활용한 중복 제거 (고급 방법)

리스트 컴프리헨션을 사용하여 한 줄의 코드로 중복을 제거할 수도 있습니다.

numbers = [1, 2, 2, 3, 4, 4, 5, 6, 6]
unique_numbers = []
[unique_numbers.append(num) for num in numbers if num not in unique_numbers]
print("중복 제거된 리스트 (순서 유지):", unique_numbers)

실행 결과

중복 제거된 리스트 (순서 유지): [1, 2, 3, 4, 5, 6]

💡 리스트 컴프리헨션을 사용하면 코드가 더욱 간결해집니다! 😃


8. 결론

리스트에서 중복을 제거하는 방법은 여러 가지가 있습니다.
📌 순서 유지 + 중복 제거

  • ✅ for 문을 사용하여 직접 필터링
  • ✅ dict.fromkeys() 사용 (Python 3.7 이상)
  • ✅ 리스트 컴프리헨션 활용

📌 순서 상관없이 중복 제거

  • ✅ set() 사용 (순서가 바뀔 수 있음)

💡 목적에 맞는 방법을 선택하여 사용하세요! 🚀

반응형