| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- css 기초
- Database
- html 기초
- 미디어쿼리
- FFT
- html 프로젝트
- Codility
- 퍼셉트론
- g검정
- java
- FlowLayout
- 예제
- 파이썬
- 사전학습
- 푸리에 변환
- 반응형웹
- FileWriter
- 상속
- inline
- ObjectOutputStream
- 반응형 웹 프로젝트
- iframe 태그
- Position
- oracle
- rnn
- CSS
- HTML
- 메서드
- BorderLayout
- GridLayout
- Today
- Total
도라에몽주머니
[Python] append와 리스트 컴프리헨션 본문
이번 안건에서 리스트에 값을 추가할 때, for문을 활용해 append 하는 방식으로 구현했었는데 리스트 컴프리헨션을 이용하면 실행시간이 더욱 단축되므로 리스트 컴프리헨션을 사용해달라는 피드백을 받았다.
그래서 리스트 컴프리헨션이란 무엇이고 append와 어떤 차이가 있는지를 이번 글을 통해 정리해보려 한다.
리스트 컴프리헨션(List Comprehension)
: 반복문으로 리스트를 작성할 때, 반복문을 별도로 작성하는 대신 리스트 내부에 작성하여 반복하는 것

위의 사진이 리스트 컴프리헨션을 가장 잘 보여주는 사진이라고 생각한다.
만약 1부터 10까지의 정수를 순서대로 가지고 있는 리스트를 만들고자 한다면, 왼쪽의 사진처럼 numbers라는 빈 리스트를 만들고 for문을 사용하여 하나씩 append 하는 방식으로 구현할 수 있다.
이를 리스트 컴프리헨션 방식으로 변경한 것이 위 사진의 오른쪽에 해당한다.

빈 배열인 numbers 대신 리스트 컴프리헨션에 대괄호를 씌워주고, for문을 내부에 작성해준다.

for문에서의 n에 해당하는 부분이 리스트 컴프리헨션에서는 x에 해당한다.
문법
기본적인 문법은 위에서 사진으로도 설명했듯이 대괄호 안에 for문을 써주는 방식이다.
[num for num in range(10)] # [0, 1, 2, ... , 9]
함수를 작성해 활용하거나 수식이나 조건을 추가하는 것도 가능하다.
# 수식 적용
[num*10 for num in range(10)] # [0, 10, 20, ... , 90]
# 함수 적용
def test(x):
x = str(x) + 'ab'
return x
[test(num) for num in range(10)] # ['0ab', '1ab', '2ab', ... , '9ab']
# 조건문 활용 (if문만 사용)
[num for num in range(10) if num%2==0] # [0, 2, 4, ... , 8]
[num for num in range(10) if num%2==0 if num%4==0] # [0, 4, 8] : 두개의 if문을 사용하는 경우에는 and 조건으로 묶여 실행됨
# 조건문 활용 (if-else문 사용)
[num if num%2==0 else 'odd' for num in range(10)] # [0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd']
리스트 컴프리헨션을 사용하는 이유
for문과 append를 사용해서도 충분히 원하는 코드를 구현할 수 있는데 왜 리스트 컴프리헨션을 사용하는걸까?
리스트 컴프리헨션을 사용하는 이유는 아래와 같다.
1. 코드의 간결성
리스트 컴프리헨션을 사용하면 일반적으로 for문과 append로 구현할 때보다 코드 수가 줄어든다. 이를 통해, 코드를 간략화하고 가독성을 높일 수 있기에 리스트 컴프리헨션을 사용한다.
2. 코드의 실행 속도 단축
리스트 컴프리헨션을 사용하면 일반적으로 for문과 append의 조합으로 사용할 때보다 코드의 실행 속도가 단축된다. 리스트 컴프리헨션에서는 append 메소드를 명시적으로 call 하지 않기 때문에 이 부분에 대한 시간이 단축되기 때문이다. 이에 관한 자세한 설명은 아래 글을 읽어보면 좋을듯 하다.
https://whatisand.github.io/why-fast-list-comprehension-python/
파이썬에서 List Comprehension이 더 빠른 이유
들어가며 보통 언어를 공부하면 쉽게 사용할 수 있도록 만들어진 문법일수록 실행시간에서 손해보는 경우가 많았습니다. 리스트 컴프리헨션도 일종의 언어 수준의 편의기능으로 생각했기에 당
whatisand.github.io
'Study > Python' 카테고리의 다른 글
| [Python] logging 모듈을 사용해 실행 로그 파일 남기기 (0) | 2025.03.11 |
|---|---|
| [환경구축] 윈도우 환경에서 pyenv와 poetry로 파이썬 환경 구축하기 (0) | 2025.01.05 |
| 코드업 기초 100제 헷갈리는 파이썬 문법 정리 (0) | 2023.06.02 |