본문 바로가기

프로그래밍 언어/파이썬

파이썬 리스트 정렬과 필터링, 데이터 가공의 기본

파이썬 리스트 정렬과 필터링, 데이터 가공의 기본

데이터 가공은 현대 프로그래밍에서 매우 중요한 역할을 합니다. 특히 파이썬의 리스트는 데이터를 정렬하고 필터링하는 데 강력한 기능을 제공합니다. 이 글에서는 파이썬 리스트를 활용하여 데이터를 정렬하고 필터링하는 기본부터 고급 방법까지를 단계별로 살펴봅니다.

 

 

목차

  1. 리스트 기본 개념
  2. 리스트 정렬: 기본 및 사용자 정의
  3. 리스트 필터링: 조건에 따른 데이터 추출
  4. 람다를 활용한 정렬과 필터링
  5. 실제 사례로 배우는 정렬과 필터링
  6. 성능 최적화를 위한 팁
  7. 예제 코드로 정리하기

 

1. 리스트 기본 개념

파이썬의 리스트(List)는 순서가 있는 가변 데이터 구조로, 다양한 데이터 타입을 저장할 수 있습니다.

  • 리스트는 대괄호([])를 사용하여 정의합니다.
  • 인덱스를 이용해 리스트의 특정 요소에 접근할 수 있습니다.
  • 데이터를 추가, 삭제, 수정하는 기능을 제공합니다.
# 리스트 생성
numbers = [3, 1, 4, 1, 5, 9]
print(numbers[0])  # 출력: 3

 

 

 

2. 리스트 정렬: 기본 및 사용자 정의

파이썬의 리스트 정렬은 sort() 메서드와 sorted() 함수를 사용하여 수행됩니다.

기본 정렬

  • sort(): 리스트 자체를 정렬합니다(원본 변경).
  • sorted(): 정렬된 새로운 리스트를 반환합니다.
numbers = [3, 1, 4, 1, 5, 9]
numbers.sort()  # 원본 리스트 정렬
print(numbers)  # 출력: [1, 1, 3, 4, 5, 9]

numbers = [3, 1, 4, 1, 5, 9]
sorted_numbers = sorted(numbers)  # 새로운 리스트 생성
print(sorted_numbers)  # 출력: [1, 1, 3, 4, 5, 9]

 

사용자 정의 정렬

key 매개변수를 사용하여 사용자 정의 기준에 따라 정렬할 수 있습니다.

names = ["Alice", "Bob", "Charlie"]
names.sort(key=len)  # 문자열 길이에 따라 정렬
print(names)  # 출력: ['Bob', 'Alice', 'Charlie']

 

 

 

3. 리스트 필터링: 조건에 따른 데이터 추출

리스트 필터링은 특정 조건에 부합하는 데이터를 추출하는 데 사용됩니다. 이를 위해 for 문이나 filter() 함수를 사용할 수 있습니다.

numbers = [3, 1, 4, 1, 5, 9]
filtered = [num for num in numbers if num > 3]
print(filtered)  # 출력: [4, 5, 9]

 

 

 

4. 람다를 활용한 정렬과 필터링

람다 표현식을 사용하면 간결하게 정렬과 필터링 기준을 정의할 수 있습니다.

numbers = [3, 1, 4, 1, 5, 9]
filtered = list(filter(lambda x: x > 3, numbers))
print(filtered)  # 출력: [4, 5, 9]

 

 

 

 

5. 실제 사례로 배우는 정렬과 필터링

정렬과 필터링은 다음과 같은 경우에 활용될 수 있습니다:

  • 학생 성적을 오름차순 또는 내림차순으로 정렬
  • 특정 연령 이상의 사용자만 필터링
  • 제품 가격 순 정렬 및 조건에 따른 필터링

 

 

 

6. 성능 최적화를 위한 팁

  • 대규모 데이터의 경우 key 매개변수 사용을 고려
  • 필터링 시 리스트 컴프리헨션이 더 빠른 경우가 많음
  • 정렬이 빈번한 경우 데이터 구조를 재설계

 

 

 

7. 예제 코드로 정리하기

다음은 정렬과 필터링을 함께 사용하는 예제입니다.

products = [
    {"name": "Laptop", "price": 800},
    {"name": "Phone", "price": 600},
    {"name": "Tablet", "price": 400}
]

# 가격순 정렬
sorted_products = sorted(products, key=lambda x: x["price"])
print(sorted_products)

# 500 이상의 가격 필터링
filtered_products = list(filter(lambda x: x["price"] > 500, products))
print(filtered_products)