STUDY/Python
[파이썬] 리스트 컴프리헨션(List Comprehension)
seonyounggg
2021. 1. 27. 22:23
Comprehension은 리스트, 집합, 딕셔너리에 적용될 수 있다.
대표적으로 쓰이는 리스트 컴프리헨션에 대해 알아보자.
a = []
for i in range(10):
a.append(i+1)
print(a) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [i+1 for i in range(10)]
print(b) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
반복문을 통한 배열 생성을
리스트 컴프리헨션을 통해 아래와 같이 간단하게 표현할 수 있다.
for 앞에는 반복문을 통해서 생성된, 즉 리스트에 넣을 값을 의미한다. 아래 그림으로 이해할 수 있다.
for 문 내에서 조건문을 사용하기 위해서는 아래와 같이 작성한다.
a = [i for i in range(10) if i % 2 == 0]
print(a) # [0, 2, 4, 6, 8]
아래와 같이도 사용할 수 있다.
a = ['odd' if i %2 == 1 else 'even' for i in range(10)]
print(a)
# ['even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']
리스트 컴프리헨션은 다중 for문을 지원한다.
for x in range(1,3):
for y in range(1,4):
print(x, '*', y,'=',x*y)
'''
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
'''
a = [(x,y,x*y) for x in range(1,3) for y in range(1,4)]
print(a)
'''
[(1, 1, 1), (1, 2, 2), (1, 3, 3), (2, 1, 2), (2, 2, 4), (2, 3, 6)]
'''
if-else문도 다중으로 쓸 수 있다.
elif문은 사용할 수 없지만 if-else문을 간접적으로 간접적으로 이용하여서 구현할 수는 있다.