Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- QuerySet
- 파이썬리스트컴프리헨션
- 백준
- 해시충돌
- django
- Python
- 리스트컴프리헨션
- bcrypt
- 파이썬입출력
- promise
- 코딩테스트파이썬
- 자바스크립트
- 파이썬문법
- *args
- clone-coding
- decorator
- 알고리즘
- 자료구조
- 인터넷 네트워크
- 파이썬
- CSS
- wecode
- clone coding
- 윈도우우분투듀얼부팅
- **kwargs
- docker
- 인증인가
- JavaScript
- RESTfulAPI
- DP
Archives
- Today
- Total
개발기록장
코딩 테스트에 필요한 기초 문법 (with 파이썬) - 리스트 컴프리헨션 본문
리스트 컴프리헨션이란?
리스트 컴프리헨션은 리스트를 초기화하는 방법 중 하나로, 대괄호([ ]) 안에 조건문과 반복문을 넣는 방식으로 사용된다.
C++이나 Java에 비해 파이썬은 이 리스트 컴프리헨션으로 손쉽게 숏코딩을 할 수 있다.
예시 1 - 1차원 리스트 초기화
# 0부터 9까지 수를 갖는 리스트
a = [i for i in range(10)]
print(a)
# 결과 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 0부터 19까지 홀수만 포함하는 리스트 (조건문이 들어간 경우)
b = [i for i in range(20) if i % 2 == 1] # 이 조건에 해당하는 i로만 리스트를 만들겠다는 의미
print(b)
# 결과 : [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
예시 2 - 2차원 리스트 초기화
리스트 컴프리헨션은 2차원 리스트를 초기화할 때 매우 효과적이다.
# N * M 배열의 2차원 리스트를 0으로 한 번에 초기화하기
a = [[0] * m for _ in range(n)]
# 3 * 4 배열의 2차원 리스트를 0으로 초기화하기
b = [[0] * 4 for _ in range(3)]
#### 출력1 ####
print(b)
# 결과 : [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
#### 출력2 ####
for i in range(3):
for j in range(4):
print(b[i][j], end=" ")
print()
# 결과 :
# 0 0 0 0
# 0 0 0 0
# 0 0 0 0
** 2차원 리스트 초기화 시 주의할 점
N * M 2차원 리스트 초기화 시
a = [[0] * m] * n
위 방식으로 리스트 초기화를 하면 잘못된 결과가 나온다.
[[0] * m] 이라는 리스트의 주소값을 n번 복제하게 되기 때문이다.
즉, 리스트 안의 리스트가 모두 하나의 리스트를 가리키고 있다는 의미로 우리가 원하는 2차원 배열의 리스트로 만들어지지 않는다.
'TIL > 알고리즘 with 파이썬' 카테고리의 다른 글
[알고리즘] DP유형 - 백준 9461번 파이썬 (0) | 2021.01.05 |
---|---|
[알고리즘] DP유형 - 백준 9095번 파이썬 (0) | 2021.01.05 |
[알고리즘] DP유형 - 백준 1463번 파이썬 (0) | 2021.01.02 |
[알고리즘] 동적 계획법(Dynamic Programming, DP) 개념 정리 (0) | 2021.01.02 |
코딩 테스트에 필요한 기초 문법 (with 파이썬) - 입출력 (0) | 2020.10.14 |