ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 여러 iterable 객체를 묶어주는 zip 내장함수
    Python 2021. 7. 2. 17:21
    반응형

    여러 개의 iterable 객체의 요소들을 순서대로 하나씩 묶어주고 싶은 경우가 있을 수 있다. 예를 들어 다음과 같이  두 개의 리스트를 순서대로 각각 쌍으로 묶고자 하는 경우 어떻게 해야 할까?

    list1 = [1, 2, 3]

    list 2 = ['A', 'B', 'C']

    --> result = [(1, 'A'), (2, 'B'), (3, 'C')]

     

    이럴 때 사용할 수 있는 함수가 zip이다. zip을 사용하면 간단하게 여러 개의 iterable 객체의 요소들을 순차적으로 튜플 자료형으로 묶어준다.

    list1 = [1, 2, 3]
    list2 = ['A', 'B', 'C']
    for elem in zip(list1, list2):
        print(elem)
    

    위의 소스코드를 실행하면 zip 함수를 통해 생성된 zip 객체를 반환하는데 zip 객체 역시 iterable 객체이다. zip 객체 안에는 튜플로 묶인 데이터들이 존재한다.

     

    만약 묶고자 하는 iterable 객체의 길이가 다르면 짧은 것에 맞추어 zip 객체를 생성하며 짝을 맞추지 못한 긴 쪽의 요소들은 모두 무시된다. 예를 들어 다음과 같은 코드를 실행해보면

    list1 = [1, 2, 3]
    list2 = ['A', 'B', 'C']
    list3 = ['a', 'b', 'c', 'd']
    for elem in zip(list1, list2, list3):
        print(elem)
    

    list3이 list1과 list2에 비해 하나 더 많은 요소를 가지고 있기 때문에 list3의 d는 묶이지 않고 무시된다. 따라서 결과는 다음과 같을 것이다.

    (1, 'A', 'a')

    (2, 'B', 'b')

    (3, 'C', 'c')

    'Python' 카테고리의 다른 글

    itertools - product(), permutations(), combinations()  (0) 2021.09.01
    all(), any() 함수  (0) 2021.08.31
    for ~ else 문  (0) 2021.07.02
    Python 코드 실행 시간 측정 (성능측정)  (0) 2021.02.13
    재귀호출 (recursive call)  (0) 2021.01.09

    댓글

Designed by Tistory.