tool 공부/PYTHON

리스트 컴프리헨션 (list comprehension)

Zziii 2023. 7. 31. 23:36
728x90
반응형

- 리스트 컴프리헨션 정의

리스트 컴프리헨션(List Comprehension)은 파이썬의 강력한 기능 중 하나로,

기존 리스트를 사용하여 간단하게 새로운 리스트를 생성하는 방법을 제공하는것이다.

이는 반복문과 조건문을 사용하여 리스트를 초기화하거나 필터링하는 작업으로

한 줄로 간결하게 표현할 수 있게 해주는 기능이다.

일반적으로 리스트 컴프리헨션은 다음과 같은 구조를 갖는다.

 

[표현식 for 항목 in iterable if 조건문]

표현식 : 각 항목에 대해 평가되는 표현식이다. 새로운 리스트의 요소를 어떻게 계산할지를 정의한다.

항목 : iterable 객체(예: 리스트, 튜플, 문자열 등)에서 가져온 요소를 나타낸다.

iterable : 반복 가능한 객체로, 순회하며 항목을 하나씩 가져올 수 있는 객체를 말한다.

조건문 (옵션) : 조건을 추가하여 특정 조건을 만족하는 항목만 포함시킬 수 있다.

 

- 리스트 컴프리헨션 대표적 예시

예를 들어, 0부터 9까지의 숫자 중에서 짝수만 가진 리스트를 생성하려면 다음과 같이 리스트 컴프리헨션을 사용할 수 있다.

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

위의 코드는 0부터 9까지의 숫자를 순회하면서, 각 숫자에 대해 x % 2 == 0 조건을 만족하는지 확인하여 짝수만 새로운 리스트에 추가한다.

 

 

- 기본 리스트 컴프리헨션

# 리스트 컴프리헨션을 사용하여 0부터 9까지의 숫자를 갖는 리스트 생성
numbers = [x for x in range(10)]
print(numbers)  # 출력: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

- 조건을 포함하는 리스트 컴프리헨션

# 리스트 컴프리헨션을 사용하여 0부터 9까지 숫자 중 짝수만 갖는 리스트 생성
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # 출력: [0, 2, 4, 6, 8]

 

- 문자열을 리스트로 분리하는 리스트 컴프리헨션

# 문자열을 리스트로 분리하여 각 문자의 리스트 생성
word = "Hello"
letters = [letter for letter in word]
print(letters)  # 출력: ['H', 'e', 'l', 'l', 'o']

 

- 문자열 두개씩 쓰는 리스트 컴프리헨션

word = '가나'

print([letter * 2 for letter in word])

['가가', '나나']

 

- 리스트 컴프리헨션에서의 연산

# 리스트의 각 요소를 제곱하여 새로운 리스트 생성
original_list = [1, 2, 3, 4, 5]
squared_list = [x ** 2 for x in original_list]
print(squared_list)  # 출력: [1, 4, 9, 16, 25]

 

- 리스트 컴프리헨션과 다중 반복문

# 두 리스트의 요소들을 조합하여 새로운 리스트 생성
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
combined_list = [(x, y) for x in list1 for y in list2]
print(combined_list)  # 출력: [(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

 

- 조건과 다중 반복문을 함께 사용하는 리스트 컴프리헨션

# 중첩 리스트 컴프리헨션을 사용하여 2차원 행렬 생성
rows = 3
cols = 3
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
print(matrix)  # 출력: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

 

- AND, OR 을 활용한 리스트 컴프리헨션

arr = [n for n in range(1, 31) if ((n % 2 == 0) AND (n % 3 == 0))]

 

리스트 컴프리헨션은 코드를 간결하고 가독성 있게 작성할 수 있으며, 간단한 데이터 변환 및 필터링 작업에 매우 유용하다. 하지만 너무 복잡하게 사용하거나 여러 조건을 포함할 경우 코드가 읽기 어려워질 수 있으므로 적절하게 활용하는 것이 좋다.

728x90
반응형

'tool 공부 > PYTHON' 카테고리의 다른 글

파이썬 중복 처리  (1) 2023.11.24
파이썬 결측치와 공백 다루기  (0) 2023.08.03
[Python] 날짜 간격 구하기  (0) 2023.07.21
파이썬 .reset_index() 인덱스 없애기  (0) 2023.07.02
파이썬 정규식  (0) 2023.05.10
let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });