range 함수 기본 사용법
파이썬에서 range()함수는 연속된 숫자들을 만들어 내는데 사용되는 내장 함수이다. range()는 주로 for 반복문과 함께 사용되어 숫자들을 반복 처리할때 유용하다.
range()함수는 아래와 같은 구문을 사용한다.
range(stop)
range(start, stop)
range(start, stop, step)
- start:(옵션) 시작하는 숫자. 기본값은 0이다.
- stop: 반드시 지정해야하는 값으로, 생성할 숫자 범위의 끝을 나타낸다. 이 값은 범위에 포함되지 않는다.
- step:(옵션) 각 숫자들 사이의 간격. 기본값은 1이다.
예시
# 1. 0부터 4까지의 숫자 생성
for i in range(5):
print(i) #결과: 0,1,2,3,4
# 2. 2부터 8까지의 숫자 생성 (8은 포함되지 않음)
for i in range(2,8):
print(i) # 결과: 2,3,4,5,6,7
# 3. 2부터 15까지의 숫자 생성, 간격은 3
for i in range(2, 15, 3):
print(i) #결과: 2,5,8,11,14

range() 함수는 범위의 숫자를 생성할 때 지정된 조건에 따라 값을 생성하므로 메모리를 효율적으로 사용할 수 있다. 이는 큰 범위의 숫자를 처리할 때 유용하다.
range와 list 같이 사용하기
파이썬에서 list()와 range() 함수를 함께 사용하면, 특정 범위의 숫자들을 포함하는 리스트를 생성할 수 있다. range() 함수를 사용하여 원하는 범위의 숫자를 생성한 후, list()함수를 사용하여 이를 리스트로 변환하면 된다.
# 1. 0부터 4까지의 숫자를 포함하는 리스트 생성
numbers = list(range(5))
print(numbers) # 결과: [0,1,2,3,4]
# 2. 2부터 8까지의 숫자를 포함하는 리스트 생성(8은 포함되지 않음)
numbers = list(range(2,8))
print(numbers) #결과: [2,3,4,5,6,7]
# 3. 2부터 15까지의 숫자를 포함하는 리스트 생성, 간격은 3
numbers = list(range(2, 15, 3))
print(numbers) # 결과: [2,5,8,11,14]
이렇게 list()와 range()를 함께 사용하면, 원하는 범위의 숫자들로 구성된 리스트를 간편하게 생성할 수 있다. 하지만 주의할 점은, 큰 범위의 숫자들을 리스트로 변환할 경우 메모리 사용량이 높아질 수 있다는 것이다. 이 경우, range() 함수를 직접 사용하는 것이 메모리 효율성 측면에서 더 좋다.
range에 수식을 넣어 사용하기
파이썬의 range() 함수는 매개 변수에 수식을 포함할 수 있다. 이렇게 하면 다양한 방식으로 범위를 생성할 수 있다. 다음은 수식을 사용하는 몇가지 예시 이다.
# 1. 1부터 10까지의 제곱수를 생성하는 리스트
squares = [x**2 for x in range(1, 11)]
print(squares) #결과: [1,4,9,16,25,36,49,64,81,100]
# 2. 5부터 20까지의 숫자 중 짝수만 포함하는 리스트
even_numbers = list(range(5 + (5 % 2), 21, 2))
print(even_numbers) #결과: [6,8,10,12,14,16,18,20]
# 3. 1부터 10까지의 숫자 중 3의 배수만 포함하는 리스트
multiples_of_three = list(range(3, 11, 3))
print(multiples_of_three) #결과: [3,6,9]
# 4. 10부터 50까지의 숫자 중 5씩 증가하는 리스트
increment_by_five = list(range(10, 51, 5))
print(increment_by_five) #결과: [10, 15, 20, 25, 30, 35, 40, 45, 50]

이러한 방식으로 range() 함수에 수식을 포함시켜 다양한 범위의 숫자들로 구성된 리스트를 생성할 수 있다. 이렇게 유연하게 사용하면 복잡한 조건과 범위를 만족하는 숫자 리스트를 간단하게 구성할 수 있다.
자주 발생할 수 있는 실수들
방금 제시한 코드를 작성하면서 발생할 수 있는 일반적인 실수들은 다음과 같다.
1. 오프 바이 원(Off-by-one) 오류: range() 함수의 끝 값은 범위에 포함되지 않기 때문에, 끝 값을 원하는 마지막 숫자보다 1만큼 크게 설정해야 한다. 이 점을 간과하면 원하는 결과를 얻지 못할수 있다.
# 잘못된 예시
wrong_range = list(range(1, 10)) # 결과: [1,2,3,4,5,6,7,8,9] - 10이 빠짐
# 올바른 예시
correct_range = list(range(1, 11)) # 결과: [1,2,3,4,5,6,7,8,9,10]
# 또는
correct_range = list(range(1, 10 + 1)) #결과: [1,2,3,4,5,6,7,8,9,10]

2. 잘못된 시작값 : 시작값을 잘못 설정하면 원하지 않는 결과를 얻을수 있다. 시작값을 설정할때 주의 깊게 검토해야 한다.
# 잘못된 예시
wrong_step = list(range(1, 11, 2)) #결과 : [1,3,5,7,9] - 짝수가 빠짐
# 올바른 예시
correct_step = list(range(2, 11, 2)) #결과 : [2,4,6,8,10]

3. 수식 오류 : range() 함수의 매개 변수에 사용되는 수식이 잘못되면, 예상치 못한 결과를 얻을수 있다. 수식을 사용할 때 계산이 올바르게 수행되는지 확인해야 한다.
# 잘못된 예시
wrong_expressin = list(range(5 + (5 % 3), 21, 2)) #결과 : [7,9,11,13,15,17,19] -시작점이 6이아닌 7부터 시작
# 올바른 예시
correct_expression = list(range(5 + (5 % 2), 21, 2)) # 결과: [6,8,10,12,14,16,18,20]

위와 같은 실수를 피하기 위해 코드를 작성할 때 주의를 기울이고, 범위와 조건을 정확하게 확인해야 한다. 또한, 코드를 실행하여 결과를 검증하고, 필요한 경우 수정해야 한다.
range로 나누기 연산자(/) 사용 방법
파이썬에서 나누기 연산자(/)는 두 숫자를 나누는 연산을 수행한다. 그러나 range() 함수에 직접 사용할수는 없다. 그 대신, range() 함수의 시작 값, 끝 값, 또는 증가 값에 수식을 사용하여 나눗셈 연산을 적용할 수 있다.
예를들어 1부터 20까지의 숫자 중에서 2로 나누어 떨어지는 숫자들만 생성하려면 다음과 같이 range() 함수와 나누기 연산자를 사용할 수 있다.
even_numbers = list(range(2, 21, 2))
print(even_numbers) # 결과: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

위의 코드에서는 range() 함수의 시작 값이 2, 끝 값이 21, 그리고 증가값이 2로 설정되어 있다. 이렇게 하면 2로 나누어 떨어지는 짝수만 생성되는 범위가 만들어 진다. 또 다른 예로, 1부터 10까지의 숫자를 반으로 나누어 출력하려면 다음과 같이 할수 있다.
half_numbers = [x / 2 for x in range(1, 11)]
print(half_numbers) # 결과: [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]

하지만 정수만 출력하고 싶다면 이 연산자(//)를 사용한다. 이 연산자는 두 숫자를 나눈 후 몫을 반환한다.그러나 위 예시와 마찬가지로 range() 함수에 직접 사용할 수는 없다. 따라서 다음과 같이 사용한다.
예를들어 1부터 10까지의 숫자를 2로 나눈 몫을 구하려면 다음과 같이 할수 있다.
integer_division = [x // 2 for x in range(1, 11)]
print(integer_division) # 결과: [0, 1, 1, 2, 2, 3, 3, 4, 4, 5]

'Python' 카테고리의 다른 글
| [Python] - Tuple (0) | 2026.01.16 |
|---|---|
| [Python] - return value (0) | 2026.01.16 |
| [PYTHON] - Dictionary (0) | 2026.01.15 |
| [PYTHON] - LIST (0) | 2026.01.01 |
| [PYTHON] - FOR (0) | 2026.01.01 |