나는 개발자다/실전 파이썬

파이썬 코딩 팁 #01. 리스트 컴프리헨션 (List Comprehension)

걍교쥬 2021. 10. 26. 14:03

이번 글은 파이썬 개발자를 목표로 하는 학생 또는 파이썬 현업 개발자를 위한 유용한 파이썬 코딩 팁인 리스트 컴프리헨션을 소개한다. 10분 정도만 투자해서 배워 두면 평생 여러분의 코딩 시간을 줄여 줄 수 있다. 

 

오늘 진행할 파이썬 코딩 팁#1 리스트 컴프리헨션의 주요 내용은 아래와 같다.

  • 0부터 9까지 정수 리스트를 "리스트 컴프리헨션"을 이용하여 만들기
  • 리스트 컴프리헨션 기본 응용 3가지 예제 소개
  • 컴프리헨션 고급 응용 2가지 에제 소개

 

파이썬

 

오늘의 파이썬 코딩 팁 "list comprehension"을 본격적으로 시작하자.

 

 

 Ugly Python

 

"0부터 9까지 정수 리스트를 만들기"

 

나를 포함해서 파이썬 코딩을 하다 보면 위와 같은 문제를 아주 흔하게 만나게 된다. 

 

당신은 어떻게 코딩할 것인가? 혹시 아래처럼 하고 있지는 않은가? C, C++, 자바를 하다가 파이썬으로 막 넘어왔을 때 나도 이렇게 했다.

"""
Ugly Python

"""

mylist = []
for i in range(10):
    mylist.append(i)
print(mylist)
print("\n\n\n")

 

별명을 "Ugly Python"이라고 붙여 보았다. 파이썬으로 코딩했지만 파이썬 프로그래밍으로 인정할 수 없다.

 

 

 

리스트 컴프리헨션 (List Comprehension)

 

리스트 컴프리헨션(list comprehension)을 이용하면 앞의 문제를 한 줄로 구현할 수 있다.

 

"""
list comprehension 적용


syntax: [<expression> for item in list if <conditional> ]
"""

mylist = [i for i in range(10)]
print(mylist)
print("\n\n\n")

 

앞에서 타이핑하는데 1분 걸렸다면 이것은 30초 정도면 된다. 여러분의 개발 시간을 드라마틱하게 절약해 줄 수 있다.

 

[ expression for item in list if conditional ]

 

파이썬 문법이니까 그냥 외우자.

 

혹시 그냥 이해가 된다면 당신은 타고난 것이다.

 

 

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

 

기본은 배웠으니 이제 응용 편이다.

 

1. 리스트 컴프리헨션에 수식 결합하기

 

"""
기본 응용 #1. 수식 적용
"""
squarelist = [i**2 for i in range(10)]
print(squarelist)
print("\n\n\n")

 

뭐 하는 코드인지 이해가 되는가?

 

0부터 9까지 제곱을 해서 리스트를 만드는 것이다.

 

 

2. 리스트 컴프리헨션에 함수 결합하기

 

"""
기본 응용 #2. 함수 호출
"""

def triple(a):
    return a*a*a


triplelist = [triple(i) for i in range(10)]
print(triplelist)
print("\n\n\n")

 

함수를 호출할 수도 있다. 이제 무슨 코드인지 쉽게 이해할 것이다.

 

3. 리스트 컴프리헨션에 조건문 결합하기

 

"""
기본 응용 #3. 조건문 결합
"""

evenlist = [i for i in range(10) if i%2==0]
print(evenlist)
print("\n\n\n")

 

리스트 컴프리헨션에 조건문을 결합하면, 단 한 줄로 0부터 9까지의 정수 중 짝수인 숫자로 리스트를 만들 수 있다.

 

 

 

리스트 컴프리헨션(list comprehension) 응용 고급 편이다.

 

1. 리스크 컴프리헨션( 2차원 리스트를 만들어 보자

 

혹시 감이 오는가? 생각보다 간단하다.

 

"""
고급 응용 #1. 이중 리스트 만들기
"""

evenlist = [[i for i in range(3)] for j in range(2)]
print(evenlist)
print("\n\n\n")

 

2. 마지막으로 딕셔너리 컴프리헨션 예제를 보자.

 

"""
고급 응용 #2. 딕셔너리 컴프리헨션
"""

dic = {i:i**2 for i in range(3) }
print(dic)
print("\n\n\n")

 

리스트 대신 딕셔너리로 바꿨을 뿐이다. 결과가 어떤지 상상이 되는가?

 

키는 [0, 1, 2], 밸류는 [0, 1, 4]인 딕셔너리가 생성된다.

 

 

리스트 컴프리헨션(list comprehension)을 마치며

 

당신의 상사나 고객은 당신의 사정에는 관심이 없다. 개발을 시작했으면 깔끔하고 빠르게 임무를 완수해야 한다. 개발자로 먹고 살 생각이라면 그리고 이왕이면 개발자로 인정받을 생각이라면 기회가 있을 때마다 당신의 스킬을 업그레이드하자.

 

오늘 배운 리스트 컴프리헨션은 파이썬 개발자에게 무조건 이득인 기술이다. 반드시 당신의 파이썬 프로그래밍에 적용해서 코드 가독성을 높이고 개발 시간도 단축해 보자.