zip() 함수
: 두 그룹의 데이터를 엮어주는 파이썬 내장 함수
- zip(A,B,C)
- 여러 개의 순회 가능한(iterable) 객체를 인자로 받음
- 각 객체가 담고 있는 데이터를 하나씩 차례로 짝지어 튜플의 형태로 반환
numbers=[1,2,3]
letters=['A','B','C']
for pair in zip(numbers,letters):
print(pair)
- 결과: 튜플로 반환
(1,'A')
(2,'B')
(3,'C')
- 병렬 처리
- 루프를 한 번만 돌면서 여러 그룹 데이터를 처리할 수 있음
- 가변 인자를 받기 때문에 2개 이상의 인자 넘겨서 병렬 처리 가능
- 각 원소를 3개의 변수에 할당하려면 for문에서 튜플을 인자풀기(unpacking)해 주면 됨
for number, upper, lower in zip('12345',"ABCDE","abcde"):
print(number, upper, lower)
- 결과
1 A a
2 B b
3 C c
4 D d
5 E e
zip() 해제
- zip(*pairs) 형태
- zip() 함수로 엮어 놓은 데이터를 다시 해제
- zip한 값을 list로 묶은 후 해제 하는 것과 zip한 값 그대로 해제 하는거랑 똑같은 결과
numbers=[1,2,3]
letters=['A','B','C']
pairs=list(zip(numbers,letters))
print(pairs)
#결과
[(1,'A'),(2,'B'),(3,'C')]
#unzip
numbers, letters=zip(*pairs)
print(numbers)
print(letters)
#결과
(1,2,3)
('A','B','C')
사전 변환
- 딕셔너리 자료형으로 만들기
- dict() 함수에 (key, value) 형태의 튜플을 넣으면 사전이 생성되는 원리 이용
- 각각의 객체에서 하나씩 짝지어진 값이 각각 key, value가 됨
- zip() 함수 적용 후 dict() 함수 적용
numbers=[1,2,3]
letters=['A','B','C']
dic= dict(zip(numbers,letters))
print(dic)
#결과
{1:'A', 2:'B', 3:'C'}
dic=dict(zip(["year","month","day"], [2001,1,31]))
print(dic)
#결과
{'year': 2001, 'month':1, 'day':31}
주의할 점
- zip() 함수로 넘기는 인자의 길이가 다를 때
- 가장 짧은 인자까지만 엮이고 나머지는 버려짐
numbers=["1","2","3"]
letters=["A"]
zip_list=list(zip(numbers,letters))
print(zip_list)
#결과
[('1','A')]
참고) daleseo.com
'코딩테스트 > Python 개념' 카테고리의 다른 글
| [Python] lambda 함수 (0) | 2022.02.07 |
|---|---|
| [Python] 파이썬- 최대공약수, 최소공배수 (0) | 2022.02.07 |
| [Python] 문자열 제거 stirp() (0) | 2022.02.05 |
| [Python] 파이썬 기초 개념2 (0) | 2022.02.05 |
| [Python] 파이썬 기초 개념 (0) | 2022.02.04 |