컴퓨터는 잘못이 없다..
[Python]프로그래머스 강의_파이썬을 파이썬 답게 파트4. Iterable 다루기_2차원 리스트 뒤집기(파이썬 ) 본문
[Python]프로그래머스 강의_파이썬을 파이썬 답게 파트4. Iterable 다루기_2차원 리스트 뒤집기(파이썬 )
도토리까꿍v 2021. 5. 7. 13:33#문제 링크
파이썬을 파이썬답게 - 2차원 리스트 뒤집기 | 프로그래머스 (programmers.co.kr)
파이썬을 파이썬답게 - 2차원 리스트 뒤집기
본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코
programmers.co.kr
#문제
문제 설명
다음을 만족하는 함수, 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):
answer=[]
for i in range(len(mylist)) :
answer.append([])
for j in range(len(mylist[i])) :
answer[i].append(mylist[j][i])
return answer
▲이중 for문으로 구현하였다.
#강의에서 제시한 답안
mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = list(map(list, zip(*mylist)))
▲강의에서는 zip과 unpacking을 이용해 해결하는 방법을 제시하였다.
#zip이란?
zip(*iterables)는 각 iterables 의 요소들을 모으는 이터레이터를 만듭니다.
튜플의 이터레이터를 돌려주는데, i 번째 튜플은 각 인자로 전달된 시퀀스나 이터러블의 i 번째 요소를 포함합니다.
┌사용예
mylist = [1, 2, 3]
new_list = [40, 50, 60]
for i in zip(mylist, new_list):
print (i)
출력
(1, 40)
(2, 50)
(3, 60)
#zip의 또다른 사용 예 #1 - - 여러 개의 Iterable 동시에 순회할 때 사용
list1 = [1, 2, 3, 4]
list2 = [100, 120, 30, 300]
list3 = [392, 2, 33, 1]
answer = []
for number1, number2, number3 in zip(list1, list2, list3):
print(number1 + number2 + number3)
출력
493
124
66
305
#zip의 또다른 사용 예 #2 - Key 리스트와 Value 리스트로 딕셔너리 생성하기
animals = ['cat', 'dog', 'lion']
sounds = ['meow', 'woof', 'roar']
answer = dict(zip(animals, sounds)) # {'cat': 'meow', 'dog': 'woof', 'lion': 'roar'}
▲파이썬의 zip 함수와 dict 생성자를 이용하면 코드 단 한 줄로, 두 리스트를 합쳐 딕셔너리로 만들 수 있다.
#문제 해설 링크
파이썬을 파이썬답게 - 2차원 리스트 뒤집기 - ⭐️zip⭐️ | 프로그래머스 (programmers.co.kr)
파이썬을 파이썬답게 - 2차원 리스트 뒤집기 - ⭐️zip⭐️
본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코
programmers.co.kr