[Python] 파이썬 리스트 컴프리헨션(list comprehension) 문법 구조

권경환·2023년 11월 12일
0

python

목록 보기
4/14
post-thumbnail

파이썬으로 코딩테스트를 하다보면 코드 가독성을 위하여 다른 사람들의 숏코딩을 찾아보게 되는데 짧게 한 줄로 끝내는 문법들을 사용하는 사람들이 많다.
그 중 하나가 리스트 컴프리헨션이라는 문법인데 오늘은 이 문법에 대해서 알아볼 생각이다.

만약 1부터 n까지의 수를 리스트에 할당시켜야 할때 해당 문법을 몰랐을때는 아래와 같이 3줄에 걸쳐서 코드를 작성했었다.

n = []
n = int(input())
for i in range(1, n+1):
  n.append(i)

하지만 리스트 컴프리헨션 문법을 사용하면 아래와 같이 한 줄로 작성을 할 수 있었다.

[i for i in range(1,int(input())+1)]

가독성 높고 깔끔한 코드를 짜고 싶어하는 나에게는 꼭 필요한 문법이였다.

사용방법 및 구조

그렇다면 해당 문법은 어떻게 구성 되어있는것일까?
궁금해서 파이썬 공식문서를 찾아보았다.

파이썬 공식문서(리스트 컴프리헨션)
더 검색해보니 리스트 컴프리헨션은 리스트에만 사용할 수있는 것이 아닌 다른 자료형(set, dict, tuple)에도 사용 가능하다고 한다!

리스트 컴프리헨션표현식과 그 뒤를 따르는 for 절if절들을 감싸는 대괄호로 구성이 되어있다.

정리해보면 구조는 for문을 돌고 나온 변수들을 활용한 값리스트로 최종 반환하는 형태이며 구조는 아래와 같이 구성되어 있다.

  1. [ 변수 활용 for 변수 in 순회할 값 ]
  2. [ 변수 활용 for 변수 in 순회할 값 if 조건식]
  3. [ 변수 활용 for 변수1 in 순회할 값 for 변수2 in 순회할 값]
  4. [ 변수 활용1 if 조건식 else 변수활용2 for 변수1 in 순회할 값]

1번은 변수활용, for문

#1번 구조를 활용했을때 예시는
#for 문을 돌고 나온 변수들에 2를 곱한 값을 반환하는 코드이다.
test = [i*2 for i in range(1,5+1)]
# 결과값) [2, 4, 6, 8, 10]

2번은 변수활용, for문, 조건식

#2번 구조를 활용했을때 예시는
#for 문을 돌고 나온 변수들에 5를 곱하고 짝수인 값들을 반환하는 코드이다.
test = [i*5 for i in range(1,5+1) if i %2 ==0]
# 결과값) [10, 20]

3번은 변수활용, for문, for문(중첩 for문)

#3번 구조를 활용했을때 예시는
#첫번째 for문 돌 때 변수 i에 for문 변수 j만큼
# 더하고 나온 값들을 반환하는 코드이다.
test = [i+j for i in range(3) for j in range(3)]
#결과값) [0, 1, 2, 1, 2, 3, 2, 3, 4]

4번은 변수활용, 조건문, for문으로 구성되어있다.

#4번 구조를 활용했을때 예시는
#for 문을 돌고 나온 변수가 짝수이면 10을 더하고
# 홀수인 값은 그대로 반환하는 코드이다.
test = [i+10 if i % 2 == 0 else i for i in range(1,5+1)]
#결과값) [1, 12, 3, 14, 5]

결론

가독성 높고 깔끔한 코드를 짜고 싶어하는 나에게는 꼭 정리해보고 싶은 문법이였으며 앞으로도 계속 코드의 가독성을 높일 수 있는 방법에 대해 찾아보고 배울 것 이다.

profile
성장을 좋아하는 주니어 개발자의 블로그

0개의 댓글