[Python] 알집

장세민·2023년 2월 26일
0

📝 TIL

목록 보기
34/40

알집의 기능은 여러 개의 파일을 압축하여 하나로 만들어 준다.
반대로 압축한 파일을 풀어서 다시 여러 개의 파일로 분리할 수도 있다.

파이썬에도 압축 기능을 가진 zip함수가 있다.
어떻게 압축하는 지 공부해보자


zip함수

zip 함수는 반복 가능한(iterable) 객체를 인자로 받고,
각 객체가 담고 있는 원소를 튜플 형태로 차례로 접근할 수 있는 반복자(iterator)로 반환해준다.

다음 예시를 통해 이해해보자.

rank = [1, 2, 3]
grade = ['A', 'B', 'C']
 
for pair in zip(rank, grade):
    print(pair)

rank 리스트와 grade 리스트를 zip함수에 인자로 넘겨서 호출 후,
for문으로 zip 함수의 반환값을 대상으로 루프 돌면서 튜플을 차례로 출력한다.


zip 함수의 이러한 기능을 어떻게 활용할 수 있을까?

활용

1) 병렬 처리

번호와 대문자, 소문자 데이터를 zip 함수를 통해 한 번에 출력해보자.

for number, upper, lower in zip("12345", "ABCDE", "abcde"):
    print(number, upper, lower)

이렇게 zip 함수를 활용하면 간편하게 여러 그룹의 데이터를 루프를 한 번만 돌려서 처리할 수 있다.

가변인자를 받기 때문에 2개 이상의 인자를 병렬 처리 할 수 있다.



2) 압축 해제

zip함수로 묶은 데이터들은 zip함수를 통해 해체도 할 수 있다.

numbers = (1, 2, 3)
letters = ("A", "B", "C")
pairs = list(zip(numbers, letters))
 
numbers, letters = zip(*pairs)
print(numbers)
print(letters)

리스트 앞에 풀기 연산자(*)를 붙여 다시 zip 함수에 넘기면 원래 튜플 형태로 돌아간다.



3) 사전 변환

zip 함수를 이용하면 쉽게 딕셔너리 자료형을 얻을 수 있다.

dict함수에 키와 값으로 이루어진 튜플을 넘겨 사전이 생성되는 원리를 이용하는 것이다.

dict(zip(["year", "month", "date"], [2023, 2, 26]))



주의사항

numbers = (1, 2, 3)
letters = ("A")
pairs = list(zip(numbers, letters))
 
print(pairs)

zip 함수로 넘기는 인자의 길이가 다르면
가장 짧은 인자를 기준으로 데이터가 엮이고 나머지 데이터들은 버려진다.




파이썬은 공부할수록 너무 편리한 것 같다.

profile
분석하는 남자 💻

0개의 댓글