새소식

반응형
Programming Language/Python

[Python] 파이썬 리스트 내포(List Comprehensions)

  • -
반응형

리스트 내포(List Comprehensions)는 파이썬에서 강력한 기능 중 하나로, 반복 작업을 간결하게 표현할 수 있는 방법이다. 이 기능은 기존 리스트, 튜플, 집합, 딕셔너리 등의 반복 가능한(iterable) 객체에서 새로운 리스트를 생성하는 데 사용된다. 다양한 예시 코드와 설명을 통해 리스트 내포의 다양한 활용법을 살펴보자.

 

1. 기본 리스트 구조


리스트 내포는 기본적으로 다음과 같은 구조를 가진다.

lst = [expression for item in iterable if condition]

expression : 각 요소를 변환하거나 계산하는 표현식이다.

item : 반복 가능한(iterable) 객체에서 하나의 요소를 가리킨다.

iterable : 데이터를 순회할 수 있는 객체(리스트, 튜플, 문자열 등)이다.

condition(선택 사항) : 조건문으로 해당 조건을 만족하는 요소만을 선택적으로 리스트에 포함시킬 수 있다.

 

2. 기본 리스트 내포 사용법


이제는 리스트 내포의 다양한 사용법에 대해 알아보자.

 

기본 구조


예제 코드

# 1. 제곱 값 리스트 만들기
squares = [x ** 2 for x in range(1, 6)]
# 출력: [1, 4, 9, 16, 25]

# 2. 긴 단어만 선택하기
words = ["apple", "banana", "cherry", "date", "elderberry"]
long_words = [word for word in words if len(word) >= 5]
# 출력: ['apple', 'banana', 'cherry', 'elderberry']

# 3. 리스트 내 정수 더하기
numbers = [1, 2, 3, 4, 5]
sum_of_numbers = sum([num for num in numbers])
# 출력: 15

 

중첩 리스트 내포


예제 코드

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened_matrix = [num for row in matrix for num in row]
# 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9]

리스트 내포는 중첩하여 사용할 수 있으며, 이를 통해 다차원 리스트를 생성할 수 있다.

 

조건부 표현식 사용


예제 코드

numbers = [1, 2, 3, 4, 5]
even_or_odd = ["even" if num % 2 == 0 else "odd" for num in numbers]
# 출력: ['odd', 'even', 'odd', 'even', 'odd']

리스트 내포에서 조건부 표현식을 사용하여 조건에 따라 다른 값을 할당할 수 있다.

 

중복 제거 및 정렬


예제 코드

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
unique_sorted_numbers = sorted(list(set(numbers)))
# 출력: [1, 2, 3, 4, 5, 6, 9]

리스트 내포를 사용하여 중복된 요소를 제거하거나 정렬할 수 있다.

 

문자열 조작


예제 코드

text = "Hello, World!"
uppercase_letters = [char.upper() for char in text if char.isalpha()]
# 출력: ['H', 'E', 'L', 'L', 'O', 'W', 'O', 'R', 'L', 'D']

리스트 내포는 문자열 처리에도 유용하게 사용될 수 있다.

 

딕셔너리 내포


예제 코드

names = ["Alice", "Bob", "Charlie"]
name_lengths = {name: len(name) for name in names}
# 출력: {'Alice': 5, 'Bob': 3, 'Charlie': 7}

리스트 내포와 유사하게 딕셔너리 내포도 가능하다.

 

조건부 리스트 내포


예제 코드

numbers = [1, 2, 3, 4, 5]
even_squares = [x ** 2 for x in numbers if x % 2 == 0]
# 출력: [4, 16]

조건에 따라 다른 리스트 내포를 사용할 수 있다.

 

리스트 내포와 함수 조합


예제 코드

def square(x):
    return x ** 2

numbers = [1, 2, 3, 4, 5]
squared_numbers = [square(num) for num in numbers]
# 출력: [1, 4, 9, 16, 25]

리스트 내포와 함수를 조합하여 리스트를 생성할 수 있다.

 

리스트 내포로 N x M의 2차원 리스트 만들기 


예제 코드

n행과 m열의 모든 요소를 0으로 초기화

n = 3  # 행의 개수
m = 4  # 열의 개수

# n x m 크기의 2차원 리스트 초기화
matrix = [[0 for j in range(m)] for i in range(n)]

# 결과 확인
for row in matrix:
    print(row)

결과

[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]

 

리스트 내포는 데이터 처리, 필터링, 변환, 정렬 등 다양한 작업에 활용된다. 위 예시 코드와 설명을 참고하여 원하는 작업에 적용할 수 있다. 리스트 내포는 파이썬의 풍부한 기능 중 하나로 코드를 간결하게 작성하고 가독성을 향상하는 데 큰 도움이 된다. 그러나 지나치게 복잡한 경우나 가독성이 떨어지는 경우에는 일반적인 for 루프를 사용하는 것이 더 나을 수 있다.

 

 

읽어주셔서 감사합니다.

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.