테스트 사이트 - 개발 중인 베타 버전입니다

두 개의 리스트를 한꺼번에 for문으로 돌리기 (+enumerate)

· 4년 전 · 2449 · 2

두 개의 리스트를 for문으로 돌린다면 이중 for문이 우선적으로 떠오르시겠지만,

 

두 리스트의 인덱스를 동일하게 변경하여야 되는 경우에는 이중 for문을 사용할 수 없겠죠 ^^

 

 

예컨대 다음과 같은 두 리스트(도시, 인구수)가 있는 경우를 상정해보겠습니다.

 

[code]

city = ['서울', '부산', '대구', '인천', '대전']
pop = [970, 340, 290, 240, 150]

[/code]

 

위와 같은 경우에 for문에 range()를 이용하여 인덱스 자체를 직접 변경해주는 방법도 물론 있겠지만,

 

제 개인적으로는 다음과 같이 zip()을 이용하는 방법이 보다 파이써닉하다고 생각합니다 :)

 

[code]

city = ['서울', '부산', '대구', '인천', '대전']

pop = [970, 340, 290, 240, 150]

for i, j in zip(city, pop):

    print(f'{i}의 인구는 {j}만입니다.')

[/code]

 

 

여기에서 한 걸음 더 나아가 다음과 같은 방법으로 for문에 두 개의 리스트를 넣고 한꺼번에 돌리는 동시에 enumerate까지 사용할 수 있습니다!

 

[code]

for idx, (value1, value2) in enumerate(zip(list1, list2)):

    print(idx, value1, value2)

[/code]

 

주의하실 점은 첫 번째 줄에서 (value1, value2) 이렇게 괄호를 반드시 사용하여야 됩니다 ^^

 

 

+)

 

참고로 Python 2에서는 위 방법을 사용할 수 없고, 다음과 같이 itertools.izip()을 사용하여야 됩니다.

 

[code]

import itertools

 

for a, b in itertools.izip(list_a, list_b):

    print(a, b)

[/code]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 2개

저도 zip 생각하고 클릭했어요~
@선구자 옙 저와 같은 생각을 갖고 계셨다니 정말 반갑네요~ ^-^
그럼 선구자 님께서도 즐거운 주말 되시고,
코로나19로 어려운 시국이지만 항상 건강하세요! :)

게시글 목록

번호 제목
831
830
829
827
824
823
821
819
818
814
809
808
807
806
803
801
799
798
797
796
794
786
783
782
767
742
655
614
591
590