다음을 만족하는 함수, solution을 완성해주세요.
- solution 함수는 이차원 리스트, mylist를 인자로 받습니다
- solution 함수는 mylist 원소의 행과 열을 뒤집은 한 값을 리턴해야합니다.
예를 들어 mylist [[1, 2, 3], [4, 5, 6], [7, 8, 9]]가 주어진 경우, solution 함수는 [[1, 4, 7], [2, 5, 8], [3, 6, 9]] 을 리턴하면 됩니다.
제한 조건
- mylist의 원소의 길이는 모두 같습니다.
- mylist의 길이는 mylist[0]의 길이와 같습니다.
- 각 리스트의 길이는 100 이하인 자연수입니다.
제출한 정답
def solution(mylist):
size = len(mylist[0])
answer = [[mylist[j][i] for j in range(size)] for i in range(size)]
return answer
예측 오답
def solution(mylist):
mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = [[], [], []]
for i in range(len(mylist)):
for j in range(len(mylist[i])):
new_list[i].append(mylist[j][i])
return new_list
풀이 정답
def solution(mylist):
mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = list(map(list, zip(*mylist)))
return new_list
zip 함수는 정말 다양한 방법으로 사용할 수 있는 것 같다.
기본적으로는 zip(*iterables)는 각 iterables의 요소들을 모으는 이터레이터를 만든다.
*mylist를 출력해보면 [1, 2, 3] [4, 5, 6] [7, 8, 9]이 나온다
zip 으로 묶었을때 zip([1, 4, 7], [4, 5, 6], [7, 8, 9])를 해보면
반복될때 순서대로 요소들을 반환하기 때문에 쉽게 unpacking 할 수 있다.
아래의 예제를 보면 더 쉽게 이해가 될 것으로 생각된다.
mylist = [1, 2, 3]
new_list = [40, 50, 60]
for i in zip(mylist, new_list):
print (i)
(1, 40)
(2, 50)
(3, 60)
'Python' 카테고리의 다른 글
파트4. 모든 멤버의 type 변환하기 (0) | 2022.07.13 |
---|---|
파트4. i 번째 원소와 i+1번째 원소 (0) | 2022.07.13 |
파트3. 2차원 리스트 뒤집기 (0) | 2022.07.06 |
파트3. 알파벳 출력하기 (0) | 2022.07.06 |
파트3. 문자열 정렬하기 (0) | 2022.07.06 |