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 |