코샵
끄적끄적 코딩 공방
코샵

인기 글

  • 분류 전체보기 (468) N
    • MongoDB (4)
    • 일기장 (4)
    • Unity (138)
      • Tip (41)
      • Project (1)
      • Design Pattern (8)
      • Firebase (6)
      • Asset (2)
    • 파이썬 (127) N
      • Basic (40) N
      • OpenCV (8)
      • Pandas (15)
      • PyQT (3)
      • SBC(Single Board Computer) (1)
      • 크롤링 (14) N
      • Fast API (29)
      • Package (6)
    • Linux (4)
    • C# (97)
      • Algorithm (11)
      • Window (7)
    • TypeScript (38)
    • Git (11)
    • SQL (5)
    • Flutter (10)
      • Tip (1)
    • System (1) N
    • BaekJoon (6)
    • Portfolio (2)
    • MacOS (1)
    • 유틸리티 (1)
    • 서비스 (5)
    • 자동화 (3)
    • Hobby (10)
      • 물생활 (10)
      • 식집사 (0)
전체 방문자
오늘
어제

최근 댓글

최근 글

반응형
hELLO · Designed By 정상우.
코샵

끄적끄적 코딩 공방

파이썬/Basic

파이썬 데이터 묶기 zip()

2022. 11. 18. 18:30
반응형
zip() 함수란??

zip 함수는 여러 개의 순회 가능한 객체를 인자로 받고, 각 객체가 담고 있는 원소를 튜플 형태로 반환합니다

저는 zip 함수를 보면 압축 파일 형태가 생각나는데요 이렇게 생각하시면 이해하시기 쉬울것입니다

score = [70,65,90]
name = ['철수','영희','진수']

for pair in zip(score,name):
    print(pair)
위 코드를 실행하면 이러한 결과물이 나옵니다
(70, '철수')
(65, '영희')
(90, '진수')

감이 오시나요?? 같은 인덱스에 있는 데이터를 묶어서 짝을 지어줍니다

 

저장
score = [70,65,90]
name = ['철수','영희','진수']

total_list = list(zip(score,name))
total_dict = dict(zip(score,name))

print(total_list)
print(total_dict)

>>  [(70, '철수'), (65, '영희'), (90, '진수')] # total_list
>>  {70: '철수', 65: '영희', 90: '진수'} # total_dict

zip으로 묶은 데이터를 원하는 자료형으로 형 변환을 해주면 됩니다. (튜플도 가능합니다)

 

주의사항

zip 함수로 넘기는 인자의 길이가 다를 경우 가장 짧은 인자 기준으로 데이터가 묶이고 나머지는 버려집니다

score = [70,65,90,100,56]
name = ['철수','영희','진수']

print(list(zip(score,name)))

>> [(70, '철수'), (65, '영희'), (90, '진수')]

score = [70,65,90]
name = ['철수','영희','진수']

total_list = zip(score,name)

print(total_list)

>> <zip object at 0x0000019C38D57900>

형변환을 해주지 않으면 zip 클래스의 객체로 표시됩니다

언패킹(unpacking)

묶인 인자를 다시 풀어줄수 있는데요 

score = [70,65,90]
name = ['철수','영희','진수']

total_list = list(zip(score,name))

un_score,un_name = zip(*total_list)
print(un_score,un_name)

>> (70, 65, 90) ('철수', '영희', '진수')

unzip이라는 함수는 존재하지 않구요 오퍼레이터(*)를 사용해 unzip의 효과(?)를 낼 수 있습니다. 

응용
score = [70,65,90]
name = ['철수','영희','진수']

total_list = sorted(zip(score,name))

print(total_list)

>> [(65, '영희'), (70, '철수'), (90, '진수')]

데이터를 정렬해 리스트로 반환하는 sorted를 사용해 점수가 낮은 순으로 정렬했습니다. ( sorted는 기본적으로 배열의 첫번째 요소 기준으로 정렬합니다)

 

score = [70,65,90]
name = ['철수','영희','진수']

total_list = sorted(zip(score,name), key= lambda x : x[1])

print(total_list)

>> [(65, '영희'), (90, '진수'), (70, '철수')]

람다식을 이용해 name 변수 기준으로 정렬도 가능합니다. 

 

저작자표시 비영리 변경금지

'파이썬 > Basic' 카테고리의 다른 글

파이썬 조건문, 반복문, 예외처리  (0) 2023.03.20
파이썬 파일 및 폴더 다루기 : OS모듈  (0) 2022.11.18
파이썬 리스트 자료형 정복  (0) 2022.11.16
파이썬 답게 코딩해보자 if condition  (0) 2022.11.13
파이썬 답게 코딩해보자 List comprehension  (0) 2022.11.12
    '파이썬/Basic' 카테고리의 다른 글
    • 파이썬 조건문, 반복문, 예외처리
    • 파이썬 파일 및 폴더 다루기 : OS모듈
    • 파이썬 리스트 자료형 정복
    • 파이썬 답게 코딩해보자 if condition
    코샵
    코샵
    나의 코딩 일기장

    티스토리툴바