zip이란 무엇인가

요전에 해시 테이블 할 때 나왔던건데, zip이 뭔지 한번 알아보는 시간을 가져보자. enu뭐시기도 나중에 알아볼거니까 안심하시고.


molecule_name = ["Ethanol", "Glucose", "Methanol"]
molecule_formula = ["C2H5OH", "C6H12O6", "CH3OH"]

여기 길이 3인 1차원 배열 두 개가 있다. 이 배열 두 개를 하나로 묶고 싶은데 그럼 어떻게 하나요?

molecular_list = zip(molecule_name,molecule_formula)

for i in molecular_list:
    print(i)

zip()으로 묶어주면 알아서 튜플로 변환해준다.

molecule_name = ["Ethanol", "Glucose", "Methanol", "Formaldehyde"]
molecule_formula = ["C2H5OH", "C6H12O6", "CH3OH"]

솔직히 여기서 궁금했던 사람 있을텐데, 그럼 배열 두 개가 길이가 다르면 어떻게 될까? 앞에서부터 짝이 맞는 애들끼리 묶기때문에 뒤에 있는 포름알데히드가 빠져있는 것을 알 수 있다. zip()으로 리스트를 묶을 때는 두 리스트의 0번-0번, 1번-1번 이런 식으로 순차적으로 묶기 때문에 중간에 데이터가 빠져버리면 아 망했어요가 된다.

molecule_name = ["Ethanol", "Glucose", "Methanol", "Formaldehyde"]
molecule_formula = ["C2H5OH", "C6H12O6", "CH3OH", "HCHO"]

molecular_list = dict(zip(molecule_name,molecule_formula))

이런 식으로 딕셔너리로 묶을 수도 있다. 그럼 이거 키랑 밸류 같이 뽑고 싶으면 어떻게 하냐고?

print(molecular_list)

딕셔너리는 위처럼 반복문 주면 키만 나오고, 전체 다 뽑을거면 이렇게 해야 한다.

for i, j in molecular_list.items():
    print(i, j)

키-밸류 쌍을 반복문 줘서 뽑을거면 이렇게 주면 된다.