본문 바로가기

Python

[Python] List Comprehension

list comprehension은 기존 list를 사용하여 간단히 다른 list를 만드는 기법이다.

즉, 리스트를 쉽게, 짧게 한 줄로 만들 수 있는 파이썬 문법이다.

일반적으로 for + append 보다 속도가 빠르다.

예시1

number = []
for i in range(10):
    number.append(i)
print(number) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

 

위의 for + append를 list comprehension형태로 나타내면 다음과 같다.

number = [i for i in range(10)]
print(number) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 

예시2

filter를 사용한 list comprehension이다.

조건(filter)를 만족하는 i만 list의 값이 된다.

number = [i for i in range(10) if i % 2 == 0]
print(number) # [0, 2, 4, 6, 8]
 

예시3

nested for loop을 이용한 list comprehension이다. 

str_1 = "Hello"
str_2 = "World"
result = [i+j for i in str_1 for j in str_2]
print(result)
# ['HW', 'Ho', 'Hr', 'Hl', 'Hd', 'eW', 'eo', 'er',
# 'el', 'ed', 'lW', 'lo', 'lr', 'll', 'ld', 'lW', 
#'lo', 'lr', 'l', 'ld', 'oW', 'oo', 'or', 'ol', 'od']
 

예시4

list comprehension을 이용해서 2차원 list 만들기

words = 'The quick brown fox jumps over the lazy dog'.split()
print(words)

stuff = [[w.upper(), w.lower(), len(w)] for w in words]

for i in stuff:
    print(i)
#['THE', 'the', 3]
#['QUICK', 'quick', 5]
#['BROWN', 'brown', 5]
#['FOX', 'fox', 3]
#['JUMPS', 'jumps', 5]
#['OVER', 'over', 4]
#['THE', 'the', 3]
#['LAZY', 'lazy', 4]
#['DOG', 'dog', 3]
 

예시5

이중for문을 사용한 list comprehension

case_1 = ["A", "B", "C"]
case_2 = ["D", "E", "A"]

result = [[i+j for i in case_1] for j in case_2]
print(result)
#[['AD', 'BD', 'CD'], ['AE', 'BE', 'CE'], ['AF', 'BF', 'CF']]

 

Reference:
BoostCourse 머신러닝을 위한 파이썬,
[Python] list comprehension에 대한 즐거운 이해

 

'Python' 카테고리의 다른 글

[Python] 우선순위 큐 (PriorityQueue)  (0) 2023.01.19
[Python] enumerate 와 zip  (0) 2022.11.09
[Python] iterable과 iterator  (0) 2022.10.02
[Python] list 관련 메서드  (0) 2022.09.12
[Python] Object Oriented Programming(OOP)  (0) 2022.05.17