/ 2025. 1. 31. 09:25

Python 리스트 내포 활용법과 실전 예제

 

 

파이썬은 그 강력한 기능과 간결한 문법 덕분에 자료 처리에서 많은 사랑을 받고 있습니다. 그중에서도 리스트 내포(List comprehension)는 리스트를 생성하는 데 있어 매우 유용한 기법입니다. 리스트 내포를 활용하면 코드의 가독성을 높일 뿐만 아니라, 성능 측면에서도 유리한 점이 많습니다. 이 글에서는 리스트 내포의 활용법과 함께 다양한 실전 예제를 통해 그 유용성을 살펴보겠습니다.

리스트 내포란?

 

리스트 내포는 기존 리스트나 반복 가능한 객체에서 새로운 리스트를 생성할 때 사용되는 표현법입니다. 이 기법은 파이썬에서 매우 직관적이고 간결한 문법으로 구현되어, 복잡한 반복문을 한 줄로 줄일 수 있는 장점이 있습니다. 기본적인 형식은 다음과 같습니다:

  • [표현식 for 항목 in 반복 가능한 객체]

여기서 '표현식' 부분은 각 항목을 기반으로 가공된 결과를 추가하는 부분이며, '항목'은 반복 가능한 객체에서 차례로 가져오는 값입니다.

리스트 내포의 기본 활용 예제

1. 간단한 리스트 생성

예를 들어, 0부터 4까지의 정수를 갖는 리스트를 생성하고 싶다면 전통적인 반복문 대신 리스트 내포를 사용할 수 있습니다.

result = [i for i in range(5)]

위 코드를 실행하면 [0, 1, 2, 3, 4]라는 결과를 얻게 됩니다.

 

2. 조건문을 활용한 리스트 생성

리스트 내포를 사용할 때 조건문을 추가하여 특정 조건을 만족하는 원소만 선택할 수도 있습니다. 예를 들어, 0부터 9까지의 숫자 중 짝수만 포함된 리스트를 생성하려면 다음과 같이 작성할 수 있습니다.

even_numbers = [x for x in range(10) if x % 2 == 0]

위 코드의 실행 결과는 [0, 2, 4, 6, 8]이 됩니다.

3. 표현식으로 변환된 리스트 생성

리스트 내포의 또 다른 장점은 각 항목에 대해 변환 작업을 수행할 수 있다는 점입니다. 예를 들어, 숫자 리스트의 각 원소를 제곱한 리스트를 만들고자 할 때는 다음과 같이 구현할 수 있습니다.

squared = [x**2 for x in range(10)]

결과는 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]입니다.

리스트 내포의 고급 활용

1. 중첩된 반복문을 활용하기

리스트 내포를 활용하여 중첩된 반복문을 사용해야 할 필요가 있을 때도 있습니다. 예를 들어, 두 개의 리스트에서 가능한 모든 조합을 생성하고 싶다면 다음과 같이 작성할 수 있습니다.

combinations = [(x, y) for x in [1, 2, 3] for y in [4, 5, 6]]

이 코드는 [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]이라는 결과를 생성합니다.

2. 조건문과 함께 사용하기

조건문이 포함된 리스트 내포를 사용하여 더 복잡한 필터링 작업도 가능해집니다. 예를 들어, 짝수와 홀수를 구분하여 각각 제곱과 세제곱을 하는 리스트를 만들고자 할 때는 아래와 같이 구현할 수 있습니다.

 
result = [x**2 if x % 2 == 0 else x**3 for x in range(10)]

이 경우, 결과값은 [0, 1, 4, 27, 16, 125, 36, 343, 64, 729]입니다.

리스트 내포를 활용한 실전 예제

이제 실제 데이터를 다루는 예제를 통해 리스트 내포의 사용법을 더욱 구체적으로 살펴보겠습니다.

1. 부모-자식 관계를 기반으로 자식 이름 정리하기

예를 들어, 부모와 자식의 나이를 포함하는 딕셔너리를 가지고, 자식의 이름을 나이 순서로 정리한다고 가정해 보겠습니다. 다음과 같은 딕셔너리가 있다고 합시다:

diagram = {

'A': [{'B': 20}, {'C': 10}, {'D': 30}],

'E': [{'F': 5}, {'G': 15}]

}

이러한 정보를 기반으로 나이 순으로 정렬된 자식 이름 리스트를 생성하려면 다음과 같은 함수를 작성할 수 있습니다.

 
def get_sorted_children(diagram):

return [name for name, age in sorted(

[[name, age] for child in diagram.values() for item in child for name, age in item.items()],

key=lambda x: x[1])]

 

이 함수를 호출하면 ['F', 'C', 'G', 'B', 'D']라는 결과가 돌아옵니다.

2. 중첩된 리스트 평탄화하기

리스트가 중첩된 경우, 그 요소를 평탄화하는 것도 리스트 내포의 유용한 활용법입니다. 예를 들어, 다음과 같은 중첩 리스트가 있을 때:

nested_list = [[1, 2], [3, 4, 5], [6, 7, 8, 9]]

이 리스트를 평탄화하기 위해서는 다음과 같은 리스트 내포를 사용할 수 있습니다:

flattened_list = [item for sublist in nested_list for item in sublist]

이렇게 하면 [1, 2, 3, 4, 5, 6, 7, 8, 9]라는 결과를 얻을 수 있습니다.

결론

리스트 내포는 파이썬에서 리스트를 생성하고 가공하는 데 있어 매우 유용한 기법입니다. 다양한 예제를 통해 확인했듯이, 간결한 문법으로 코드를 더욱 이해하기 쉽게 만들어 주며 성능 또한 향상시킬 수 있습니다. 하지만 지나치게 복잡한 내포 구조는 가독성을 해칠 수 있으므로 적절한 사용이 필요합니다. 리스트 내포를 통해 파이썬의 매력을 경험해 보시길 바랍니다.

 

 

닭칼국수 건강하게 만드는 간단한 조리법

건강한 닭칼국수 만들기닭칼국수는 따뜻하고 푸짐한 국물 요리로, 특히 건강을 중요시하는 분들에게 안성맞춤인 보양식입니다. 오늘은 집에서 손쉽게 만들 수 있는 닭칼국수 레시피를 공유하

wooddrop.tistory.com

 

자주 물으시는 질문

리스트 내포란 무엇인가요?

리스트 내포는 파이썬에서 기존의 리스트나 반복 가능한 별도의 객체로부터 새로운 리스트를 만들어내는 간단하고 직관적인 방법을 말합니다.

리스트 내포를 사용할 때의 장점은 무엇인가요?

이 기법을 활용하면 코드의 가독성을 높이고, 필요한 리스트를 생성할 때 반복문을 사용하는 것보다 훨씬 더 간결하게 작성할 수 있습니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유