반응형

목차

  1. range 함수 기본 사용법
  2. range와 list 같이 사용하기
  3. range에 수식을 넣어 사용하기
  4. 자주 발생할 수 있는 실수들
  5. range로 나누기 연산자(/) 사용 방법

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_expression = 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]


 

반응형