-->

[파이썬] zip으로 반복문에 리스트 여러개 같이 돌리기

2개의 리스트를 반복문에 같이 돌려?야 할 때 보통 아래와 같은 방법을 사용하곤 했다. 하나의 리스트를 기준으로 반복문을 돌고 다른 하나의 리스트는 인덱스를 사용하는 방법이다.

 

list1=[1,2,3,4,5]
list2=[6,7,8,9,10]

for i,v in enumerate(list1):
	print(v,list2[i])
1 6
2 7
3 8
4 9
5 10

 

 

하지만 zip을 사용하면 좀 더 깔끔하게 다수의 리스트에 대해 동시에 반복문을 돌릴 수 있다. 

 

list1=[1,2,3,4,5]
list2=[6,7,8,9,10]

for v1,v2 in zip(list1,list2):
	print(v1,v2)
1 6
2 7
3 8
4 9
5 10

 

 

이러한 방식을 알았다면 아래와 같은 응용도 가능하다. [1,2,3,4,5]라는 리스트가 있을 때 1,2 / 2,3 / 3,4  와 같이 다음 요소를 연속으로 사용하는 방법이다. 물론 인덱스 i와 i+1을 사용해도 되지만 zip을 사용하는 것이 좀더 깔끔한 것 같다.

 

list=[1,2,3,4,5]
for v_first,v_next in zip(list,list[1:]):
	print(v_first,v_next)
1 2
2 3
3 4
4 5

 

 

그리고 zip도 enumerate로 감쌀 수 있기 때문에 값과 인덱스 전부 얻을 수 있다.

 

list1=[1,2,3,4,5]
list2=[6,7,8,9,10]

for i,(v1,v2) in enumerate(zip(list1,list2)):
	print(i,v1,v2)
0 1 6
1 2 7
2 3 8
3 4 9
4 5 10

댓글

Designed by JB FACTORY