-
Python/Enumerate()의 올바른 이해코딩/Python 2024. 2. 26. 03:25728x90
리스트를 순환할 때 흔히 쓰는 enumerate().
파이썬에도 있고 스위프트에도 있고 여러 언어에서 쓰이는 개념이다.
enumerate(iterable, start)에서 start 옵션을 사용할 때 주의할 점이 있다.
아래 코드는 작동하지 않는다.
start 옵션은 인덱스 시작값만 3으로 설정하고 xs의 실제 리스트는 xs[0]에서 시작하는 것은 그대로이기 때문이다.
그래서 i가 10이 될 때 에러가 난다. 리스트는 xs[9]가 마지막이기 때문이다.
xs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] for i, x in enumerate(xs, 3): print(f'i {i}: {xs[i]}') ''' output i 3: 3 i 4: 4 i 5: 5 i 6: 6 i 7: 7 i 8: 8 i 9: 9 에러 '''
728x90프로그램을 아래처럼 고치면 제대로 동작한다.
xs의 요소수만큼 i는 3에서 12까지 순환하고 x값은 xs[0]에서 xs[9]까지 출력하기 때문이다.
for i, x in enumerate(xs, 3): print(f'i {i}: {x}') ''' output: i 3: 0 i 4: 1 i 5: 2 i 6: 3 i 7: 4 i 8: 5 i 9: 6 i 10: 7 i 11: 8 i 12: 9 '''
만일 xs의 제한된 범위에서 순환하고 싶다면 직접 xs의 범위를 제한해야 한다.
아래 프로그램은 xs의 범위와 index를 일치시켰다.
for i, x in enumerate(xs[3:], 3): print(f'i {i}: {xs[i]}') ''' output: i 3: 3 i 4: 4 i 5: 5 i 6: 6 i 7: 7 i 8: 8 i 9: 9 '''
728x90'코딩 > Python' 카테고리의 다른 글
Python/람다식의 다른 적용: if문 대체 (1) 2024.03.08 Python/정규식 HOWTO (0) 2024.03.04 Python/Data 입력값, 인수, 변수 (1) 2024.02.11 Python/애플 사진(Desktop Apple Photos)/Video date & EXIF issue (0) 2024.02.01 Python/사진, 동영상 정리 V2 (0) 2024.01.23