파이썬 문법

dongmin·2026년 3월 12일

프로그래머스 코딩테스트 문제를 풀면서 새롭게 알게된 문법과 코테 문제를 기록해두기

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

코딩테스트 문제를 풀면서 리스트 컴프리헨션(List Comprehension) 문법을 처음 사용해 보았다.
리스트 컴프리헨션은 반복문을 사용하여 리스트를 간결하게 생성하는 파이썬 문법이다.


1. 리스트 컴프리헨션 기본 구조

[표현식 for 변수 in 반복가능객체]

예시

numbers = [1,2,3,4,5]

result = [x * 2 for x in numbers]

print(result)

출력

[2, 4, 6, 8, 10]

설명

  • numbers 리스트의 값을 하나씩 x에 넣는다
  • x * 2 연산을 수행한다
  • 결과를 새로운 리스트로 생성한다

2. 일반 반복문과 비교

일반적인 반복문

numbers = [1,2,3,4,5]

result = []

for x in numbers:
    result.append(x * 2)

리스트 컴프리헨션

result = [x * 2 for x in numbers]

→ 같은 동작을 더 간결하게 표현할 수 있다.


3. 조건문 사용

리스트 컴프리헨션에는 조건문도 사용할 수 있다.

numbers = [1,2,3,4,5,6]

result = [x for x in numbers if x % 2 == 0]

print(result)

출력

[2, 4, 6]

설명

  • numbers 리스트에서
  • 짝수인 값만 새로운 리스트에 저장

4. 코딩테스트에서 자주 사용하는 예시

1차원 리스트를 2차원 리스트로 변환

arr = [1,2,3,4,5,6,7,8,9]

result = [arr[i:i+3] for i in range(0, len(arr), 3)]

print(result)

출력

[[1,2,3],
 [4,5,6],
 [7,8,9]]

설명

  • range(0, len(arr), 3) → 3칸씩 이동
  • arr[i:i+3] → 리스트를 3개씩 슬라이싱

5. 정리

리스트 컴프리헨션은 다음과 같은 특징이 있다.

  • 반복문을 한 줄로 간결하게 작성할 수 있다
  • 새로운 리스트를 만들 때 자주 사용된다
  • 조건문(if)을 함께 사용할 수 있다
  • 코딩테스트에서 데이터 변환이나 필터링에 매우 유용하다

6. 코딩테스트 문제 예시 (프로그래머스)

문제

문자열 배열 strlist가 매개변수로 주어질 때
각 문자열의 길이를 담은 배열을 반환하는 문제이다.

입력 예시

["We", "are", "the", "world!"]

출력

[2, 3, 3, 6]

  • "We" → 길이 2
  • "are" → 길이 3
  • "the" → 길이 3
  • "world!" → 길이 6

해결 코드 (리스트 컴프리헨션 사용)

def solution(strlist):
    return = [len(i) for i in strlist]

6.1 코딩테스트 문제(프로그래머스)

문제

정수의 절댓값이 담긴 배열 absolutes
각 정수의 부호를 나타내는 boolean 배열 signs가 주어진다.

  • signs[i] == True → 양수
  • signs[i] == False → 음수

실제 정수들의 합을 구하는 문제이다.


입력 예시

absolutes = [4,7,12]
signs = [True, False, True]

처음에 작성한 코드

    x = 0
    for i in signs:
        if i == True:
            absolutes[x] = absolutes[x] * 1
        else:
            absolutes[x] = absolutes[x] * (-1)
        x += 1
    return sum(absolutes)

너무 길고 복잡함

리스트 컴프리헨션zip 함수를 사용하면 코드를 훨씬 간결하게 작성할 수 있다.

def solution(absolutes, signs):
    return sum(a if s else -a for a, s in zip(absolutes, signs))

느낀 점

처음에는 문법이 낯설었지만, 반복문보다 훨씬 간결하게 코드를 작성할 수 있다는 점이 인상적이었다.
코딩테스트에서 리스트 생성이나 데이터 변환을 할 때 매우 유용한 문법이라고 느꼈다.
또한

0개의 댓글