본문 바로가기
IT/Python Quiz

[python] 리스트 컴프리헨션 코드 작성 연습4

by Echinacea 2025. 2. 20.
반응형

 

 

문제 1

2차원 리스트에서 모든 요소를 하나의 리스트로 변환하는 리스트 컴프리헨션을 작성하세요.

 

🔹 입력 예시

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

 

🔹 출력 예시

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

 

 

문제 2

3차원 리스트를 1차원 리스트로 변환하는 리스트 컴프리헨션을 작성하세요.

 

🔹 입력 예시

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

 

🔹 출력 예시

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

 

 

문제 3

2차원 리스트에서 짝수만 포함하는 리스트를 리스트 컴프리헨션을 사용하여 생성하세요.

 

🔹 입력 예시

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

 

🔹 출력 예시

[2, 4, 6, 8]

 

 

문제 4

각 요소를 (값, 행번호, 열번호) 형태로 변환하는 리스트 컴프리헨션을 작성하세요.

 

🔹 입력 예시

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

 

🔹 출력 예시

[(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)]

 

 

문제 5

2차원 리스트를 전치행렬(Transpose)로 변환하는 리스트 컴프리헨션을 작성하세요.

 

🔹 입력 예시

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

 

🔹 출력 예시

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

✅ 정답과 해설

문제 1 정답

✅ 리스트 컴프리헨션 사용

flattened = [num for row in matrix for num in row]

✅ 리스트 컴프리헨션 사용하지 않음

flattened = []
for row in matrix:
    for num in row:
        flattened.append(num)

🔍 설명: 2차원 리스트를 1차원 리스트로 변환하는 코드입니다.


문제 2 정답

✅ 리스트 컴프리헨션 사용

flattened_3d = [num for layer in cube for row in layer for num in row]

✅ 리스트 컴프리헨션 사용하지 않음

flattened_3d = []
for layer in cube:
    for row in layer:
        for num in row:
            flattened_3d.append(num)

🔍 설명: 3차원 리스트를 1차원 리스트로 변환합니다.


문제 3 정답

✅ 리스트 컴프리헨션 사용

even_numbers = [num for row in matrix for num in row if num % 2 == 0]

✅ 리스트 컴프리헨션 사용하지 않음

even_numbers = []
for row in matrix:
    for num in row:
        if num % 2 == 0:
            even_numbers.append(num)

🔍 설명: 짝수만 선택하여 1차원 리스트로 변환합니다.


문제 4 정답

✅ 리스트 컴프리헨션 사용

indexed_matrix = [(matrix[i][j], i, j) for i in range(len(matrix)) for j in range(len(matrix[i]))]

✅ 리스트 컴프리헨션 사용하지 않음

indexed_matrix = []
for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        indexed_matrix.append((matrix[i][j], i, j))

🔍 설명: 각 요소의 값과 (행, 열) 인덱스를 포함한 리스트를 생성합니다.


문제 5 정답

✅ 리스트 컴프리헨션 사용

transposed = [[row[i] for row in matrix] for i in range(len(matrix[0]))]

✅ 리스트 컴프리헨션 사용하지 않음

transposed = []
for i in range(len(matrix[0])):
    new_row = []
    for row in matrix:
        new_row.append(row[i])
    transposed.append(new_row)

🔍 설명: 행과 열을 바꿔 전치행렬을 생성합니다.


 

반응형

댓글