본문 바로가기
초보자를 위한 Python/5. Python 함수

5.5 파이썬 range() 함수 : Float, List, For loop 예제

by 엔터티 2022. 10. 11.
반응형

파이썬에서 range는 무엇일까요?

파이썬에서 range()로 표시하는 범위(구간, range)함수는 파이썬3에서 사용할 수 있는 내장함수 이며 주어진 시작 및 중지 인덱스를 기반으로 일련의 숫자를 제공합니다.

시작 인덱스가 지정되지 않은 경우 인덱스는 0으로 간주되어 중지 인덱스까지 값을 1씩 증가 시킵니다.

예를들어 range(5)는 0,1,2,3,4 값을 출력합니다.

파이썬에서 range()함수는 매우 유용한 명령어이며 for loop를 사용하여 반복해야 할 때 주로 사용됩니다.

목차

    구문

    range(start, stop, step)

    매개변수

    • start: (선택 사항) 시작 인덱스는 정수이며, 지정하지 않을 경우 기본값은 0입니다.
    • stop: 중지 인덱스는 범위 함수가 중지되어야 하는 값을 결정합니다. 범위 기능에 대한 필수 입력입니다. 마지막 값은 항상 정지 값보다 1 작습니다.
    • step: (선택 사항). 단계 값은 다음 숫자 범위가 증가해야 하는 숫자이며 기본적으로 1입니다.

    반환값

    반환 값은 지정된 시작에서 중지 인덱스까지의 숫자 시퀀스 입니다.

    파이썬 range() 함수의 역사

    ython range()는 xrange()가 함수이기 전에 python 버전 3부터 도입되었습니다.

    range와 xrange()는 모두 일련의 숫자를 생성하는 데 사용됩니다.

    다음은 범위와 xrange()의 차이점입니다.

    range() xrange()
    range()는 일련의 숫자를 제공하고 숫자 목록을 반환합니다. xrange() 함수는 값을 얻기 위해 for 루프에서 반복되어야 하는 생성기 객체를 제공합니다.
    range()는 목록을 반환합니다. xrange()는 생성기 객체를 반환합니다.
    range() 메서드는 xrange()와 비교하여 반환된 목록을 저장해야 하므로 더 많은 메모리를 사용합니다. xrange()는 생성기 객체를 반환하므로 즉시 값을 제공하지 않으며 값을 가져오기 위해 for-loop 내부에서 사용해야 합니다.
    메모리 사용량이 많기 때문에 방대한 데이터 세트에서 작업할 때 코드 실행이 느립니다. 코드 실행은 xrange()를 사용하여 더 빠릅니다.

    range() 의 사용

     range()를 사용하여 0-9의 값을 인쇄하는 방법을 보여줍니다.

    범위에 사용된 값은 10이므로 출력은 0 1 2 3 4 5 6 7 8 9

    시작이 주어지지 않았기 때문에 시작은 0으로 간주되고 마지막 값은 9까지 주어집니다. 마지막 값은 항상 주어진 값보다 1 작습니다. 즉, stop-1입니다.

    for i in range(10):
        print(i, end =" ")

    출력

    0 1 2 3 4 5 6 7 8 9

    range() 의 시작 및 정지

    코드에서 시작 값은 3이고 중지 값은 10입니다. 여기에서 시작 인덱스는 3이므로 숫자 시퀀스는 3부터 시작 값까지 시작합니다. 시퀀스의 마지막 값은 정지 값 10-1 = 9보다 1이 작습니다.

    for i in range(3, 10):
        print(i, end =" ")

    출력

    3 4 5 6 7 8 9

    시작, 중지 및 단계 사용

    시작 값은 3이므로 숫자 시퀀스는 3에서 시작합니다. 중지 값은 10이므로 숫자 시퀀스는 (10-1) 즉 9에서 멈춥니다. 단계는 2이므로 시퀀스의 각 값은 단계 값이 지정되지 않은 경우 단계 값은 기본적으로 1로 설정됩니다.

    for i in range(3, 10, 2):
        print(i, end =" ")

    출력

    3 5 7 9

    지금까지 range() 함수가 주어진 정지 값에 대해 증가된 값을 제공하는 방법을 보았습니다. 이제 주어진 범위에서 감소된 값을 가져오는 예를 시도해 보겠습니다.

     

    양수 단계를 사용하여 범위의 값을 증가

    range()의 매개변수 단계를 사용하여 값을 증가/감소시킬 수 있습니다. 기본적으로 양수 값 1입니다. 따라서 항상 증가된 값을 제공합니다.

    증가된 값을 출력으로 원할 경우 단계 값은 양수여야 합니다.

    for i in range(1, 30, 5):
        print(i, end =" ")

    출력

    1 6 11 16 21 26

    역 범위: 음수 단계를 사용하여 값 감소

    범위()에 음수 값이 있는 매개변수 단계를 사용하여 감소된 값을 얻을 수 있습니다. 아래 예에서 단계 값은 음수이므로 출력은 주어진 범위 값에서 감소합니다.

    for i in range(15, 5, -1):
        print(i, end =" ")

    출력

    15 14 13 12 11 10 9 8 7 6

    시작 값은 15, 중지 값은 5, 단계 값은 음수 즉 -1입니다. 위의 입력으로 range() 함수는 값이 15부터 stop 값에 도달할 때까지 감소하지만 여기서 차이점은 마지막 값이 stop + 1이 된다는 것입니다.

    Python range()에서 부동 숫자(float) 사용

    이제 부동 소수점 숫자를 사용하여 range()에 대해 작업해 보겠습니다.

    for i in range(10.5):
        print(i, end =" ")

    위의 예에서 정지 값을 10.5로 사용했습니다.

    출력

    Traceback (most recent call last):
      File "python_range.py", line 1, in <module>
        for i in range(10.5):
    TypeError: 'float' object cannot be interpreted as an integer

    TypeError: 'float' 개체는 정수로 해석될 수 없습니다.

    range() 함수가 시작, 중지 및 단계에 대한 부동 소수점 숫자를 지원하지 않기 때문에 Python에서 오류가 발생합니다.

     

    Python range()와 함께 for - loop 사용

    이 예제에서는 숫자 배열을 사용하고 range()를 사용하여 for 루프 내에서 배열을 반복하는 방법을 살펴보겠습니다.

    arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']
    
    for i in range(len(arr_list)):
        print(arr_list[i], end =" ")

    출력

    MysqlMongodb PostgreSQL Firebase

    위의 예에서 len(arr_list)을 중지 값으로 사용했습니다. for 루프는 arr_list에 항목이 4개 있으므로 중지 값, 즉 배열의 길이가 4가 될 때까지 반복됩니다. 

    시작 값은 0이 되고 단계는 1이 됩니다. 따라서 값은 0에서 시작하여 3에서 멈출 것입니다. 즉, 배열 길이 -1은 4 -1 = 3을 의미합니다.

     

    Python range()를 list로 사용

    이 예에서는 범위의 출력을 목록(list)으로 사용하는 방법을 보여줍니다.

    print(list(range(10)))

    출력

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    출력이 목록(list) 형식임을 알 수 있습니다. range()를 반복할 필요가 없었고 list() 메서드를 사용하여 출력을 범위에서 목록 형식으로 직접 변환할 수 있었습니다.

    파이썬 range()에서 문자(characters) 사용하기

    지금까지 파이썬 range()에서 정수를 사용했습니다. 또한 파이썬 범위에서 부동 소수점 숫자가 지원되지 않는 것을 보았습니다. 문자를 사용할 때 어떤 일이 일어나는지 출력해 보겠습니다.

    for c in range ('z'):
            print(c, end =" ")

     

    출력

    Traceback (most recent call last):
      File "python_range.py", line 1, in <module>
        for c in range ('z'):
    TypeError: 'str' object cannot be interpreted as an integer

    TypeError: 'str' 개체를 정수로 해석할 수 없습니다.

    문자열을 정수로 해석할 수 없다는 오류가 발생합니다.

    알파벳 목록을 얻으려면 코드를 사용자 정의하고 아래와 같이 원하는 출력을 얻을 수 있습니다.

     

    def get_alphabets(startletter, stopletter, step):
        for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):
            yield chr(c)
    
    print(list(get_alphabets("a", "h", 1)))

    출력

    ['a', 'b', 'c', 'd', 'e', 'f', 'g']

    범위 요소에 액세스하는 방법

    for - loop를 사용하여 범위에서 값을 가져오거나 인덱스를 사용하여 range()에서 요소에 액세스할 수 있습니다.

    for - loop 사용

    for i in range(6):
        print(i)

    출력

    0
    1
    2
    3
    4
    5

    index 사용

    인덱스는 범위와 함께 사용되어 해당 위치에서 사용 가능한 값을 가져옵니다. 범위 값이 5인 경우 시작 값을 얻으려면 range(5)[0] 및 다음 값 range(5)[1] 등을 사용할 수 있습니다.

    startvalue = range(5)[0] 
    print("The first element in range is = ", startvalue) 
    
    secondvalue = range(5)[1] 
    print("The second element in range is = ", secondvalue) 
    
    lastvalue = range(5)[-1]
    print("The first element in range is = ", lastvalue)

    출력

    startvalue = range(5)[0] 
    print("The first element in range is = ", startvalue) 
    
    secondvalue = range(5)[1] 
    print("The second element in range is = ", secondvalue) 
    
    lastvalue = range(5)[-1]
    print("The first element in range is = ", lastvalue)

    list()의 사용

    이 메서드는 range()의 모든 요소를 ​​인쇄합니다. list()를 사용하면 range()의 요소를 목록 형식으로 반환합니다.

    print(list(range(10)))

    출력

     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    주어진 범위에 대한 목록 출력을 제공합니다.

    range()를 사용하여 짝수 가져오기

    range()를 사용하면 입력으로 제공된 범위의 짝수 목록을 가져옵니다. range()의 매개변수는 start가 2이고 stop이 20이고 step이 2이므로 값이 2씩 증가하고 stop-2까지 짝수를 제공합니다.

    for i in range(2, 20, 2):
        print(i, end =" ")

    출력

    2 4 6 8 10 12 14 16 18

    two-range() 출력의 병합

    이 예제에서는 itertools 모듈 chain() 함수의 도움으로 2개의 range() 함수를 연결합니다.

    from itertools import chain 
    
    print("Merging two range into one") 
    frange =chain(range(10), range(10, 20, 1))
    for i in frange: 
        print(i, end=" ")

    출력

    Merging two range into one
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

    NumPy와 함께 range() 사용하기

    NumPy 모듈에는 작동하고 range()와 같은 유사한 출력을 제공하는 range() 함수가 있습니다. Arrange()는 range()와 같은 매개변수를 사용합니다.

    구문

    arange(start, stop, step)

    NumPy로 작업하려면 아래 단계를 따르십시오.

     

    1단계 : NumPy 모듈 가져오기

    import numpy

    실행 중에 numpy 모듈을 찾을 수 없다는 오류가 발생하는 경우 2단계와 같이 모듈을 설치해야 합니다.

     

    2단계 : NumPy 설치

    pip install numpy

    3단계 : NumPy를 사용한 range()의 작업 예

    import numpy as np 
    
    for  i in np.arange(10):
       print(i, end =" ")

    출력

    0 1 2 3 4 5 6 7 8 9

    NumPy arange()를 사용한 부동 소수점(float) 숫자

    range()를 사용하여 부동 소수점 시퀀스를 얻는 것은 불가능하지만 NumPy range()를 사용하면 가능합니다.

    예시: 우리가 원하는 범위는 0.5에서 1.5 사이입니다. 값은 0.2씩 증가합니다.

    import numpy as np 
    
    for  i in np.arange(0.5, 1.5, 0.2):
       print(i, end =" ")

    출력

    0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

    우리가 얻는 출력은 약간 이상합니다. 일부 float 숫자는 소수점 이하 16자리로 표시됩니다. 이것은 10진수 부동 숫자를 2진 형식으로 저장하는 복잡성 때문에 발생합니다. 필요한 경우 값을 반올림하고 필요한 소수 자릿수로 제한할 수도 있습니다.

     

    요약

    • Python range()는 Python(3.x)의 Python에서 사용할 수 있는 내장 함수이며 주어진 시작 및 중지 인덱스를 기반으로 일련의 숫자를 제공합니다. 시작 인덱스가 지정되지 않은 경우 인덱스는 0으로 간주되어 중지 인덱스까지 값을 증가시킵니다.
    • Python range()는 xrange()가 함수이기 이전에 python 버전 3에서 도입되었습니다.
    • range()는 일련의 숫자를 제공하고 숫자 목록을 반환합니다. xrange() 함수는 값을 얻기 위해 for 루프에서 반복되어야 하는 생성기 객체를 제공합니다.
    • range()의 매개변수 단계를 사용하여 값을 증가/감소시킬 수 있습니다. 기본적으로 양수 값 1입니다. 따라서 항상 증가된 값을 제공합니다.
    • range() 함수는 정수 값만 지원하므로 Python은 부동 소수점 숫자에 대해 오류를 제공합니다.
    • range()의 값은 for-loop, index 및 list()를 사용하여 액세스할 수 있습니다.
    • NumPy 모듈에는 작동하고 range()와 같은 유사한 출력을 제공하는 range() 함수가 있습니다. range()는 range()와 같은 매개변수를 받습니다.
    • range()를 사용하여 지원되지 않는 부동 소수점 시퀀스 NumPy range()를 얻을 수 있습니다.
    반응형

    댓글