파이썬의 반복구문인 for는 배열을 처리하는데 매우 간단한 방법을 제공한다. 가령, ar이라는 배열이 이미 선언되어 있으면, ar의 원소들을 하나하나 끌어서 처리하는데 다음과 같이 쓰면 된다.


for i in ar:

   myFunction(i)


문제는 내가 i가 몇번째 원소인지 굳이 알아야만 하는 경우에 나타난다. 내가 지금 푸는 문제는 전체 길이가 N인 배열에서 k번째 원소와 k+m번째 원소 사이에 있는 원소에만 함수를 적용해야 하는 상황이기 떄문에 굳이 필요하다. 이 경우, 고전적인 방법으로


for i in range(len(ar)):

   if i>k and i<k+m:

      myFunction(ar[i])


이렇게 쓰면 될 것이다. 또는


j=0

for i in ar:

   if j>k and j<k+m:

      myFunction(ar)

   j+=1


이렇게 쓸 수도 있다. 하지만 이렇게 작성하는 것은 전혀 파이썬스러운 코딩이 아니다. 파이썬처럼 코딩하는 것은 제일 처음에 쓴 바로 그것이다. 그래서 지금 어떻게 하고 있냐고?


myFunction(ar[k:k+m])


이렇게 해보고 있다. 뭔가 이상하지만 이제 파이썬 스러워졌다.


by snowall 2015. 8. 31. 01:25