[python] 내장함수 zip()

bee·2023년 4월 11일
0

python 문법 정리

목록 보기
1/1
post-thumbnail

파이썬 내장함수 zip()에 대해 알아보도록 하자.

zip()

여러개의 순회 가능한 객체(iterable)를 인자로 받고, 각 객체가 담고있는 원소를 튜플(tuple)의 형태로 차례대로 접근할 수 있는 반복작업이 가능한 함수

iterable 객체 : 반복이 가능한 객체
ex) list, dict, set, str, bytes, tuple, range

** iterator 객체 : 값을 차례대로 꺼낼 수 있는 객체
iterable한 객체를 내장함수 또는 iterable 객체의 메소드로 객체를 생성할 수 있다.

## 예제
num = [1, 2]
alpha = ['a', 'b']

# pair 자체가 num alpha의 원소를 각각 한 개씩 묶은 쌍 (unpacking 안 한 상태)
for pair in zip(num, alpha) :
	print(pair)

[1, 'a']

[2, 'b']

위 코드를 zip() 함수를 사용하지 않고 인덱스로 각각을 접근해서 사용하면 다음과 같이 쓸 수 있다.

for i in range2):
	pair = (num[i], alpha[i]
	print(pair)

[1, 'a']

[2, 'b']





zip() 함수 특징

  • zip() 함수는 가변인자를 받기 때문에 2개 이상의 인자를 받을 수 있다.
## 예제

# num, upper, lower 3개로 나누어 unpacking
for num, upper, lower in zip('123', 'ABC', 'abc'):
	print(num, upper, lower)

1 A a
2 B b
3 C c

위 예제처럼 num, upper, lower 로 unpacking(인자 풀기) 해서 반복문을 돌면 튜플이 아니라 값 그대로가 출력된다.





zip() 함수 사용 시 주의사항

zip() 함수는 가장 짧은 인자 기준으로 데이터가 엮이고 나머지 인자들은 버려지기 때문에, 넘기는 인자의 길이는 각 iterable 객체별로 동일해야 한다.

## 예제
num = [1, 2, 3]
alpha = ['a']
list(zip(num, alpha))

[(1, 'a')]





Dictionary 변환

파이썬에서 dict함수에 키(key) 값(value)을 넘기면 사전(dictionary)이 생성되는 원리를 이용한다.

## 예제 (1)
keys = [1, 2, 3]
values = ['a', 'b', 'c']
dict(zip(keys, values))

{1: 'a', 2: 'b', 3: 'c'}

## 예제 (2)
dict(zip(["year", "month", "date"], [2023, 4, 11]))

{'year': 2023, 'month': 4, 'date': 11}






unzip

'unzip'즉, zip기능 반대로 풀어내고 싶다면 zip하고자 하는 객체 앞에 *를 써서 사용할 수 있다.

## 예제 - packing
num = (1, 2, 3)
alpha = ('a', 'c', 'c')
pairs = list(zip(num, alpha))
print(pairs)

[(1, 'a'), (2, 'b'), (3, 'c')]

## 예제 - unpacking
first, second = zip(*pairs)
print(first)
print(second)

(1, 2, 3)
('a', 'b', 'c')





Youtube) 달레의 코드
위키독스) 파이썬 - 기본을 갈고 닦자!

profile
벌집처럼 밀도있게 차곡차곡 쌓아나가는중

0개의 댓글