안녕하세요.

파이썬의 comprehension 에 대해 알아보겠습니다.

제일 많이 사용되는 리스트를 기준으로 진행하겠습니다.
( Set, Dictdictionary 에서도 유사한 방식으로 사용 가능합니다. )

리스트 생성 및 추가 –  for, append

for 문과 append 함수를 사용해서 리스트의 요소를 추가하는 코드입니다.

alphabet = []

for i in 'abcdefg':
	alphabet.append(i)

print(alphabet) # ['a', 'b', 'c', 'd', 'e', 'f', 'g']

리스트 생성 및 추가 – comprehension

이번에는 List comprehension 을 이용해 리스트를 생성하는 방법입니다.

alphabet = [i for i in 'abcdefg']

print(alphabet) # ['a', 'b', 'c', 'd', 'e', 'f', 'g']

둘 중에 어느 코드를 사용하더라도 동일한 결과를 얻을 수 있습니다.

다만 List comprehension 을 사용하면 코드를 간결하게 바꿀 수 있는 장점이 있습니다.

리스트 생성 – 조건 추가 ( if )

단순한 리스트외에 특정 조건이 만족하는 요소만으로 이루어진 리스트를 만들어보겠습니다.

result = [i for i in [1, 2, 3, 4, 5, 6] if i > 4]

print(result) # [5, 6]

위 코드 처럼 if 문으로 조건을 추가하여 특정 조건을 만족하는 요소로만 이루어진 리스트를 만들수 있습니다.

리스트 요소 변화시키기

새로 생성되는 리스트의 요소에 별도의 연산을 추가해줄 수도 있습니다.

result = [i+10 for i in [1, 2, 3, 4, 5, 6]]

print(result) # [11, 12, 13, 14, 15, 16]

요소마다 10을 더해서 리스트로 만들어주었습니다. ( 파이썬의 내장함수의 map 을 사용하는것과 유사하게 사용이 가능합니다. )

comprehension 중첩

comprehension 을 2중으로 중첩할 수 도 있습니다.
( for 문을 2중으로 사용하는것과 같습니다. )

result = [x for i in [[1, 2], [3, 4]] for x in i]

print(result) # [1, 2, 3, 4]

결과에서 볼 수 있듯이 2차원 리스트의 요소들을 모두 1차원 리스트의 요소들로 변환하였습니다.

이런식으로 다양하게 활용 할 수 있는 파이썬만의 재미있는 문법인 Comprehension 을 알아보았습니다.

감사합니다. 😄