본문 바로가기
Etc./Python

[Python] zip

by ahj 2021. 10. 10.

zip(*iterables)는 각 iterables 의 요소들을 모으는 이터레이터를 만듭니다.
튜플의 이터레이터를 돌려주는데, i 번째 튜플은 각 인자로 전달된 시퀀스나 이터러블의 i 번째 요소를 포함합니다.

 

뭔 말인지 모르겠다.

간단히 내 말로 정리해보자면 zip에 인자로 넣어준 iterable한 변수들(tuple, list 등)을 쌍으로 맞춰서 tuple로 변환해주는 것

#보통은 다음과 같이 2중 for 문을 이용해 리스트의 row와 column을 뒤집습니다.

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


#하지만 python에서는
#파이썬의 zip과 unpacking 을 이용하면 코드 한 줄로 리스트를 뒤집을 수 있습니다.

mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = list(map(list, zip(*mylist)))

둘은 같은 것을 수행한다.

map함수 이용해서 mylist를 dict type으로도 반환할 수 있다. 뭔가 enumerate스럽네

이 packing, unpacking 뭔가 list 쓸 때 요긴할 것 같다. 잘 써보자.

 

강의에서 ⭐까지 붙여놓은걸로 봐서는 잘 쓰자 zip!!!!

 

+

def solution(mylist):
    answer = []
    for i in range(len(mylist)-1):
        answer.append(abs(mylist[i] - mylist[i+1]))
    return answer
def solution(mylist):
    answer = []
    for n1, n2 in zip(mylist, mylist[1:]):
        answer.append(abs(n1 - n2))
    return answer

둘은 같다. zip 쓰는 데에서 mylist에서 남는거는?? 하는 의문이 들 수도 있지만

zip은 서로 다른 길이의 배열이 들어올 경우 짧은 쪽의 길이만큼만 iteration이 돌아간다고 한다.

'Etc. > Python' 카테고리의 다른 글

[Python] itertools  (0) 2021.10.10
[Python] join  (0) 2021.10.10
[Python] 리스트 내포(List comprehension)  (0) 2021.10.10
[Python] sort() vs sorted()  (0) 2021.10.10
[Python] shallow/deep copy  (0) 2021.10.10

댓글