Python은 다양한 라이브러리와 메서드를 통해 데이터 조작과 관련된 거의 모든 요구 사항을 처리할 수 있습니다. 두 숫자 사이의 모든 숫자를 생성해야 할 때도 Python의 내장 함수나 외부 라이브러리를 활용하면 간단하게 해결할 수 있습니다. 이 글에서는 대표적인 세 가지 방법을 소개합니다.
range() 함수 사용하기
range() 함수는 기본적으로 0부터 시작하여 지정된 숫자까지 1씩 증가하는 숫자 시퀀스를 반환합니다. 시작 값, 끝 값, 증가 단계(간격)를 직접 지정하여 원하는 형태로 변경할 수도 있습니다.
예제
def getnums(s, e, i):
return list(range(s, e, i))
# Driver Code
start, end, intval = -3, 6, 2
print(getnums(start, end, intval))출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
[-3, -1, 1, 3, 5]
이 예제에서는 시작 값이 -3, 끝 값이 6, 간격이 2로 설정되어 있으므로, -3부터 5까지 2씩 증가하는 숫자들이 리스트 형태로 반환됩니다. range()는 마지막 값을 포함하지 않는다는 점에 유의하세요.
random.randrange() 사용하기
random 모듈을 사용하면 위와 유사한 방식으로 범위 내에서 무작위 숫자 하나를 생성할 수 있습니다. randrange 메서드를 호출하고 시작 값, 끝 값, 간격을 매개변수로 전달하면 됩니다.
예제
import random
def getnums(s, e, i):
return random.randrange(s, e, i)
# Driver Code
start, end, intval = 3, 16, 2
print(getnums(start, end, intval))출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
7
randrange()는 지정된 범위와 간격을 기준으로 가능한 값 중 하나를 무작위로 선택하여 반환합니다. 따라서 실행할 때마다 결과가 달라질 수 있습니다.
numpy.arange() 사용하기
NumPy 라이브러리 역시 이러한 요구 사항을 처리할 수 있는 폭넓은 함수들을 제공합니다. arange 함수는 range()와 동일한 방식으로 매개변수를 받으며, 결과를 배열(array) 형태로 반환합니다.
예제
import numpy as np
def getnums(s, e, i):
return np.arange(s, e, i)
# Driver Code
start, end, intval = 3, 16, 2
print(getnums(start, end, intval))출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
[ 3 5 7 9 11 13 15]
numpy.arange()는 일반 리스트가 아닌 NumPy 배열을 반환한다는 점이 range()와 다릅니다. 수치 연산이 많은 작업이라면 NumPy 배열이 성능 면에서 더 유리합니다.
마무리
정리하면, 규칙적인 숫자 목록이 필요하다면 range(), 범위 내 무작위 숫자 하나가 필요하다면 random.randrange(), 배열 기반의 수치 연산이 필요하다면 numpy.arange()를 사용하는 것이 가장 적합합니다. 상황에 맞는 방법을 선택하여 효율적으로 활용해 보세요.