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
반응형
'Python' 카테고리의 다른 글
[Python] gc.collect() (0) | 2022.09.21 |
---|---|
[Python] tqdm - 알고리즘 진행률 확인하기 (0) | 2022.09.10 |
[Python] shutil - 폴더 및 파일 복사하기 (0) | 2022.09.09 |
[Python] uuid - UUID 생성하기 (0) | 2022.08.30 |
[Python] time - 날짜 및 알고리즘 소요시간 구하는 법 (0) | 2022.08.30 |
댓글