for문에서 i는 단지 for문을 반복시키기 위해 변수를 준 것이고 그 i라는 변수의 범위는 range 함수에 의해 정해진다.

따라서 이를 혼동하지 않으려면 반드시 range 함수에 대한 이해가 필요하다.

사실 범위는 같게 읽어을 수도 있지만 index 개념이 아닌 단지 숫자 그 자체로 접근하는게 좋다.

 

range(start, stop[, step]) 구조로

range(a,b,c)는 'a에서 시작해 b에서 멈춰라. 등차는 c다.' 라는 범위를 정해주는 것이다.

즉, range(a,b,c) 는 'a부터 시작해서 cn + a >= b 면 멈춰라.' 와 같다.

이를 수식으로 표현하면 다음과 같다. a <= cn + a < b

 

출력되는 숫자의 범위 자체는 [a : b] 와 range(a, b, ) 가 같다. 또한 [a : b : c]는 range(a, b, c)와 같다.

a : start, b : stop, c : step 이라는 구조는 같지만 둘의 큰 차이는 다음과 같다.

1. [a : b]는 결과를 리스트로 반환하지만 range(a, b, )는 결과를 숫자로 반환한다. 따라서 range 함수는 결과 값을 for 문과 결합해 등차수열결과값의 범위를 지니는 변수로 사용할 수 있다.

2. [a : : c]는 가능한데 range(a, , c)는 불가능하다. 리스트 호출에서는 종료 지점을 설정하지 않고 a부터 마지막 리스트까지 c 간격으로 반환이 가능하지만, range 함수는 정지시키는 값이 반드시 필요하다. 따라서 [a : : c]는 range(a, len(listname), c)로 표현할 수 있다.

a : start, b : stop, c : step 이라는 구조는 같다.

단, [ ] 의 결과값은 리스트, range 함수의 결과값은 숫자다.

 

 

range 함수는 stop!! 정지시키는 값이 반드시 필요하다!

 

 

리스트 전체 길이의 값을 반환시켜 stop에 넣어줌으로써 같은 범위를 표현할 수는 있다.

+ Recent posts