enumerate(iterable, start=0)
iterator를 지원하는 객체를 받으면 index와 value를 포함한 tuple을 반환합니다.
next(iterator[ ,default ])
iterator를 지원하는 객체의 다음 item을 반환합니다.
Python에서 반복문에 List 또는 string 변수를 사용할 때 index와 value를 모두 사용하기 위해 enumerate를 사용합니다. 하지만 조건에 따라 반복문 중에 바로 다음 index 또는 특정 index들을 넘겨야 하는 경우가 필요합니다. 이런 상황에서 필요한 방법을 소개하겠습니다.
enumerate 사용
List 또는 string 변수를 반복문을 이용하면서 값을 사용할 때가 있습니다. 하지만 일반적인 for문을 사용하면 index와 value를 모두 변수로써 받아오지 못하는데 이 때 enumerate()를 사용하면 두 가지를 변수로써 받아올 수 있습니다.
listVar = ["A", "B", "C", "D"]
for idx, val in enumerate(listVar):
print("index :",idx,", val :",val)
next 사용
for 문을 이용하면 자동으로 index가 다음으로 넘어가지만 for문을 이용하지 않고도 next() 메서드를 사용하면 enumerate()의 다음 값으로 넘어갈 수 있습니다.
listVar = ["A", "B", "C", "D"]
it = iter(enumerate(listVar))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
반복문에서 index skip하기
위에서 설명한 enumerate()와 next()를 이용하여 반복문에서 index 값을 skip 하는 방법을 알아보겠습니다. 반복문을 돌면서 리스트의 값이 "B"라면 다음 index는 skip하는 상황을 작성해보겠습니다.
listVar = ["A", "B", "C", "D"]
it = iter(enumerate(listVar))
for idx, val in it:
print("index :",idx,", val :",val)
if val == "B":
next(it)
가끔씩은 다음 index뿐만이 아니라 다수의 index를 넘겨야하는 경우가 있습니다. 이럴 때는 islice() 함수를 사용해서도 가능하지만 쉽게는 1줄짜리 for문을 이용해서도 가능합니다.
listVar = ["A", "B", "C", "D", "E", "F", "G"]
it = iter(enumerate(listVar))
for idx, val in it:
print("index :",idx,", val :",val)
if val == "B":
[next(it, None) for _ in range(4)] # skip 4