본문 바로가기
  • Hello_
Python

[Python] for loop - enumerate, zip 사용

by LDwDL 2022. 9. 9.
728x90
반응형

오늘은 python for 문에 빠질 수 없는 enumerate와 zip에 대해 포스팅을 하고자한다.

 

enumerate

enumerate를 직역하자면 숫자를 센다는 의미로 for문이 몇번 돌아갔는지 카운트를 해주는 내장 함수이다.

 

[enumerate]

다음과 같이 사용이 되며 0부터 시작한다.

import numpy as np

linspace_array_1 = np.linspace(1,100,10)

for num, value in enumerate(linspace_array_1):
    print('count: {}, value: {}'.format(num,value))
    
"""
count: 0, value: 1.0
count: 1, value: 12.0
count: 2, value: 23.0
count: 3, value: 34.0
count: 4, value: 45.0
count: 5, value: 56.0
count: 6, value: 67.0
count: 7, value: 78.0
count: 8, value: 89.0
count: 9, value: 100.0
"""

linspace_array_1이 순차적으로 리턴되며 동시에 실행되면서 이번 for 문이 몇번째 실해되고 있는지 횟수도 동시에 리턴된다.

 

zip

두개 이상의 array를 동시에 for문을 돌려 알고리즘을 구동시키고자 하는 상황은 적지 않다.

이 때 zip 함수는 굉장히 유용하다.

 

[zip]

linspace_array_1 = np.linspace(1,100,10)
linspace_array_2 = np.linspace(1,200,10)

for value_1, value_2 in zip(linspace_array_1,linspace_array_2):
    print('value_1 : {}, value_2 : {}'.format(value_1,value_2))
    
"""
value_1 : 1.0, value_2 : 1.0
value_1 : 12.0, value_2 : 23.11111111111111
value_1 : 23.0, value_2 : 45.22222222222222
value_1 : 34.0, value_2 : 67.33333333333333
value_1 : 45.0, value_2 : 89.44444444444444
value_1 : 56.0, value_2 : 111.55555555555556
value_1 : 67.0, value_2 : 133.66666666666666
value_1 : 78.0, value_2 : 155.77777777777777
value_1 : 89.0, value_2 : 177.88888888888889
value_1 : 100.0, value_2 : 200.0
"""

linspace_array_1와 linspace_array_2가 동시에 순차적으로 리턴되는 것을 알 수 있다.

 

enumerate(zip( ))

이 두가지 함수를 동시에 쓰는것도 가능하다.

 

[enumerate와 zip을 동시에 사용]

for num, (value_1, value_2) in enumerate(zip(linspace_array_1,linspace_array_2)):
    print('count : {}, value_1 : {}, value_2 : {}'.format(num,value_1,value_2))
    
"""
count : 0, value_1 : 1.0, value_2 : 1.0
count : 1, value_1 : 12.0, value_2 : 23.11111111111111
count : 2, value_1 : 23.0, value_2 : 45.22222222222222
count : 3, value_1 : 34.0, value_2 : 67.33333333333333
count : 4, value_1 : 45.0, value_2 : 89.44444444444444
count : 5, value_1 : 56.0, value_2 : 111.55555555555556
count : 6, value_1 : 67.0, value_2 : 133.66666666666666
count : 7, value_1 : 78.0, value_2 : 155.77777777777777
count : 8, value_1 : 89.0, value_2 : 177.88888888888889
count : 9, value_1 : 100.0, value_2 : 200.0
"""

사용시 주의해야할 점은 zip함수가 enumerate 함수 내부에 있어야 문제없이 실행이 된다.

또한 인터프리터의 입장에서 혼동이 오지 않도록 num, (value_1, value_2)와 같이 zip으로 부터 리턴되는 값을 별도로 tuple로 구성시켜줘야한다.

 

이 두가지 함수를 잘 사용한다면 굉장히 효율적으로 for문 구성이 가능하여 개발하는데 유용할 것이다.

 

728x90
반응형

댓글