반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags more
Archives
Today
Total
관리 메뉴

멋진 개발자가 되고 싶다

[Python] zip() 함수 본문

Algorithm Study

[Python] zip() 함수

오패산개구리 2021. 7. 18. 16:03
728x90
반응형

정의:

 

2개 이상의 시퀀스를 짧은 길이를 기준으로 일대일 대응하는 새로운 튜플 시퀀스를 만드는 역할

 

 

 

정의만 보고는 뭔 소린지 잘 이해가 안 된다.

 

   >>> a = [1,2,3,4,5]

  >>> b = [6,7,8,9]

>>> c = [2,3,4]

 

>>> zip(a, b)

<zip object at 0x105b6d9b0>

 

 

 

파이썬 2에서는 zip()의 결과는 바로 리스트가 되지만 파이썬 3+에서는 제너레이터를 리턴한다.

 

따라서 제너레이터의 실제값을 추출하기 위해서는 list()로 한 번 더 묶어주면 된다.

 

>>> list(zip(a, b))

[(1,6), (2,7), (3,8), (4,9)]

 

>>> list(zip(a, b, c))

[(1,6,2), (2,7,3), (3,8,4)]

 

 

 

보다시피 제일 짧은 시퀀스를 기준으로 값이 묶이는 것을 확인할 수 있다.

 

아울러 zip()의 결과는 튜플 시퀀스이기 때문에 값을 변경하는 것이 불가능하다.

 

따라서 다음과 같은 조작은 에러를 일으킨다.

 

>>> d = list(zip(a, b, c))

>>> d [0][0]=0

Error!

 

 

 

앞서 정의에서 "2개 이상의 시퀀스"라고 했는데

 

1개의 시퀀스로도 접근이 가능하다.

 

>>> list(zip(a))

[(1,), (2,), (3,), (4,), (5,)]

 

 

 

하지만 이런 식으로 출력되면 뭣도 못하겠죠??

 

마지막으로 zip()과 같이 쓰이곤 하는 아스테리스크(*) 또한 꼭 알아둬야 하는데

 

다음 포스팅에서 알아보도록 하자.

728x90
반응형