반응형
1️⃣ 2차원 리스트 평탄화하기
2차원 리스트에서 모든 요소를 하나의 리스트로 변환하는 다양한 방법을 소개합니다.
🔹 개념 설명
- 리스트 컴프리헨션을 사용하면 중첩된 for 루프를 간결하게 표현할 수 있습니다.
- **평탄화(Flattening)**란 다차원 리스트를 1차원 리스트로 변환하는 것을 의미합니다.
🔹 입력 예시
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
✅ 리스트 컴프리헨션 사용
flattened = [num for row in matrix for num in row]
✅ 리스트 컴프리헨션 사용 (홀수만 포함)
flattened_odd = [num for row in matrix for num in row if num % 2 == 1]
✅ 리스트 컴프리헨션 사용 (각 행의 첫 번째 요소만 선택)
first_column = [row[0] for row in matrix]
✅ 리스트 컴프리헨션 사용하지 않음
flattened = []
for row in matrix:
for num in row:
flattened.append(num)
🔹 출력 예시
[1, 2, 3, 4, 5, 6, 7, 8, 9]
2️⃣ 3차원 리스트 평탄화하기
🔹 개념 설명
- 3차원 리스트는 2차원 리스트의 집합입니다.
- 여러 개의 중첩된 for 루프를 리스트 컴프리헨션으로 표현할 수 있습니다.
🔹 입력 예시
cube = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
✅ 리스트 컴프리헨션 사용
flattened_3d = [num for layer in cube for row in layer for num in row]
✅ 리스트 컴프리헨션 사용 (짝수만 포함)
flattened_3d_even = [num for layer in cube for row in layer for num in row if num % 2 == 0]
✅ 리스트 컴프리헨션 사용 (각 레이어의 첫 번째 행만 선택)
first_rows = [row for layer in cube for row in layer[:1]]
🔹 출력 예시
[1, 2, 3, 4, 5, 6, 7, 8]
3️⃣ 다차원 리스트에서 특정 조건 필터링
🔹 개념 설명
- **필터링(Filter)**을 적용하여 특정 조건을 만족하는 요소만 선택할 수 있습니다.
- 조건을 추가하면 더 정교한 데이터 추출이 가능합니다.
🔹 입력 예시
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
✅ 리스트 컴프리헨션 사용 (짝수만 포함)
even_numbers = [num for row in matrix for num in row if num % 2 == 0]
✅ 리스트 컴프리헨션 사용 (3의 배수만 포함)
multiples_of_3 = [num for row in matrix for num in row if num % 3 == 0]
✅ 리스트 컴프리헨션 사용 (각 행에서 최대값만 선택)
max_values = [max(row) for row in matrix]
🔹 출력 예시
[2, 4, 6, 8]
4️⃣ 다차원 리스트 요소의 위치 포함
🔹 개념 설명
- 각 요소의 위치 정보가 필요할 때, 인덱스를 함께 저장할 수 있습니다.
- 행과 열의 인덱스를 함께 출력하면, 위치 기반 연산이 가능합니다.
🔹 입력 예시
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
✅ 리스트 컴프리헨션 사용 (값과 인덱스 포함)
indexed_matrix = [(matrix[i][j], i, j) for i in range(len(matrix)) for j in range(len(matrix[i]))]
✅ 리스트 컴프리헨션 사용 (짝수만 포함)
even_indexed_matrix = [(matrix[i][j], i, j) for i in range(len(matrix)) for j in range(len(matrix[i])) if matrix[i][j] % 2 == 0]
✅ 리스트 컴프리헨션 사용 (대각선 요소만 선택)
diagonal_elements = [(matrix[i][i], i, i) for i in range(len(matrix))]
🔹 출력 예시
[(1, 0, 0), (2, 0, 1), (3, 0, 2), (4, 1, 0), (5, 1, 1), (6, 1, 2), (7, 2, 0), (8, 2, 1), (9, 2, 2)]
🎯 추가 개념 (코딩테스트 대비)
🔹 2차원 리스트 뒤집기 (전치행렬)
transposed = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
🔹 특정 행의 평균 계산하기
row_averages = [sum(row) / len(row) for row in matrix]
🔹 2차원 리스트에서 특정 값 찾기
found = [(i, j) for i in range(len(matrix)) for j in range(len(matrix[i])) if matrix[i][j] == 5]
🔹 2차원 리스트에서 최대값과 위치 찾기
max_value = max(max(row) for row in matrix)
max_positions = [(i, row.index(max(row))) for i, row in enumerate(matrix) if max(row) == max_value]
반응형
'IT > Python Basic' 카테고리의 다른 글
[python] 문자와 ASCII/Unicode 변환 - ord()와 chr() 함수 정리 (0) | 2025.02.27 |
---|---|
[Python] 특집 개념 - translate 함수 (0) | 2025.02.24 |
[Python] 코딩테스트 필수 math 함수 개념 (0) | 2025.02.21 |
[Python] 슬라이싱 특집 - 기본부터 고급 활용까지 (0) | 2025.02.20 |
[Python] 초급 개념20 - JSON 데이터 다루기 (json 모듈) (0) | 2025.02.20 |
[Python] 초급 퀴즈18 - 문자열 조작 (split, join, format, replace) (0) | 2025.02.20 |
[Python] 초급 퀴즈17 - 예외 처리 (try-except, raise, finally) (0) | 2025.02.19 |
[Python] 초급 퀴즈16 - 파일 입출력 (open, with, read/write) (0) | 2025.02.19 |
댓글