이 코드는 코드 안에 리스트 길이 5를 하드코딩했기 때문에 최선의 코드로 볼 수 없다. 다음 코드에서 루프를 작성하는 더 나은 방법을 찾을 수 있다.
my_lst = [100, 102, 50, 25, 72]
for i in range(len(my_lst)):
my_lst[i] *= 2
이 루프가 실행되고 나면 my_lst는 [200, 204, 100, 50, 144]가 된다.
range 함수는 표 1-3과 같이 인수의 개수를 1개, 2개 혹은 3개로 지정함에 따라 열거형 인덱스를 만들어 준다.
▼ 표 1-3 range 함수의 반환값
문법 |
반환값 |
range(end) |
0부터 시작하여 end보다 작은 숫자까지 증가하는 열거형 데이터를 생성한다. |
range(beg, end) |
beg부터 시작하여 end보다 작은 숫자까지 증가하는 열거형 데이터를 생성한다. |
range(beg, end, step) |
beg부터 시작하여 end보다 작은 숫자까지 증가하는 열거형 데이터를 생성한다. 단 각 항목은 step만큼 증가한다. step이 음수면 결괏값은 역순으로 정렬된다. |
range 함수의 또 다른 사용처는 열거형 정수를 사용해서 순회하는 루프를 생성하는 것이다. 가령 다음 루프는 팩토리얼(factorial) 숫자를 계산한다.
n = int(input('양의 정수를 입력하라 : '))
prod = 1
for i in range(1, n + 1):
prod *= i
print(prod)
이 루프는 range(1, n + 1)이 1부터 n까지 나열된 정수를 제공하면서 의도대로 동작한다. 최종적으로 이 루프는 다음 연산을 처리하게 된다.
1 * 2 * 3 * ... n