리스트 컴프리헨션
- 리스트를 초기화하는 방법 중 하나이다.
- 리스트 컴프리헨션을 이용하여 대괄호([]) 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있다.
- 예) 2단
- 일반적인 코드
n = []
for i in range(1, 10):
n.append(2 * i)
print(n) # [2, 4, 6, 8, 10, 12, 14, 16, 18]
- 리스트 컴프리헨션
n = [2 * i for i in range(1,10)]
print(n) # [2, 4, 6, 8, 10, 12, 14, 16, 18]
조건문을 사용한 리스트 컴프리헨션
- if
키워드는 for문 다음에 위치해야 한다.
- 예) 홀수만 포함하는 리스트
n = [i for i in range(15) if i % 2 == 1]
print(n) # [1, 3, 5, 7, 9, 11, 13]
중복 표현
- 컴프리헨션은 내부에서 for
키워드와 if
키워드를 몇번이고 반복할 수 있다.
- 다중 for 문을 사용할 때 왼쪽에 있는 for문이 먼저 작동한다.
2차원 리스트 초기화
- 특정 크기의 2차원 리스트를 초기화할 때는 반드시 리스트 컴프리헨션을 이용해야 한다.
- 예) N * M 크기의 2차원 리스트 초기화
n = 4
m = 3
array = [[0] * m for _ in range(n)]
print(array) # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
- 예) 잘못된 2차원 리스트 초기화
- 4개의 리스트에서 인덱스 1에 해당하는 원소들의 값이 모두 6으로 바뀌었다. 이는 내부적으로 포함된 4개의 리스트가 모두 동일한 객체에 대한 4개의 레퍼런스로 인식되기 때문이다.
n = 4
m = 3
array = [[0] * m] * n
print(array) # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
array[1][1] = 6
print(array) # [[0, 6, 0], [0, 6, 0], [0, 6, 0], [0, 6, 0]]
Ref.
1. 책 / 이것이 취업을 위한 코딩 테스트다 with 파이썬
2. 제대로 파이썬 / https://wikidocs.net/22805
* 잘못된 부분에 대해 댓글 남겨주시면 감사하겠습니다! 😀
'Python' 카테고리의 다른 글
[Python/Selenium] 네이버 로그인 (0) | 2023.12.03 |
---|---|
[Python] bisect - 배열 이진 분할 알고리즘 (0) | 2023.05.25 |
[Python] map에 대하여 (0) | 2023.02.21 |
[Python] 리스트 정렬 (0) | 2023.02.01 |
[Python/Pandas] 점 개수 세기 (0) | 2022.12.04 |
리스트 컴프리헨션
- 리스트를 초기화하는 방법 중 하나이다.
- 리스트 컴프리헨션을 이용하여 대괄호([]) 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있다.
- 예) 2단
- 일반적인 코드
n = []
for i in range(1, 10):
n.append(2 * i)
print(n) # [2, 4, 6, 8, 10, 12, 14, 16, 18]
- 리스트 컴프리헨션
n = [2 * i for i in range(1,10)]
print(n) # [2, 4, 6, 8, 10, 12, 14, 16, 18]
조건문을 사용한 리스트 컴프리헨션
- if
키워드는 for문 다음에 위치해야 한다.
- 예) 홀수만 포함하는 리스트
n = [i for i in range(15) if i % 2 == 1]
print(n) # [1, 3, 5, 7, 9, 11, 13]
중복 표현
- 컴프리헨션은 내부에서 for
키워드와 if
키워드를 몇번이고 반복할 수 있다.
- 다중 for 문을 사용할 때 왼쪽에 있는 for문이 먼저 작동한다.
2차원 리스트 초기화
- 특정 크기의 2차원 리스트를 초기화할 때는 반드시 리스트 컴프리헨션을 이용해야 한다.
- 예) N * M 크기의 2차원 리스트 초기화
n = 4
m = 3
array = [[0] * m for _ in range(n)]
print(array) # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
- 예) 잘못된 2차원 리스트 초기화
- 4개의 리스트에서 인덱스 1에 해당하는 원소들의 값이 모두 6으로 바뀌었다. 이는 내부적으로 포함된 4개의 리스트가 모두 동일한 객체에 대한 4개의 레퍼런스로 인식되기 때문이다.
n = 4
m = 3
array = [[0] * m] * n
print(array) # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
array[1][1] = 6
print(array) # [[0, 6, 0], [0, 6, 0], [0, 6, 0], [0, 6, 0]]
Ref.
1. 책 / 이것이 취업을 위한 코딩 테스트다 with 파이썬
2. 제대로 파이썬 / https://wikidocs.net/22805
* 잘못된 부분에 대해 댓글 남겨주시면 감사하겠습니다! 😀
'Python' 카테고리의 다른 글
[Python/Selenium] 네이버 로그인 (0) | 2023.12.03 |
---|---|
[Python] bisect - 배열 이진 분할 알고리즘 (0) | 2023.05.25 |
[Python] map에 대하여 (0) | 2023.02.21 |
[Python] 리스트 정렬 (0) | 2023.02.01 |
[Python/Pandas] 점 개수 세기 (0) | 2022.12.04 |