range와 arange를 알아보자

김민주·2022년 1월 1일
1
post-thumbnail

1. range()
파이썬에서 기본으로 제공하는(bulit-in) 함수
class range(stop)
class range(start, stop[, step])
The range type represents an immutable sequence of numbers and is commonly used for looping a specific number of times in for loops.

Python docs range

2. numpy.arange
넘파이 안에 들어가 있는 함수
numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)
Values are generated within the half-open interval [start, stop) (in other words, the interval including start but excluding stop). For integer arguments the function is equivalent to the Python built-in range function, but returns an ndarray rather than a list.

Numpy docs numpy.arange

3. range와 np.arange의 차이
1) range 함수에는 정수 단위만 지원하나, np.range는 실수 단위도 표현가능하다.

range(1, 5, 0.5)  # TypeError 발생
np.arange(1, 5, 0.5)  # 가능

2) range 메소드는 range itorator 자료형을 반환하고, np.arange 메소드는 numpy array 자료형을 반환한다. 따라서, np.array 메소드 결과는 넘파이에서 수행하는 연산 연계가 가능하다.

range(1, 5)*2  # TypeError 발생
np.arange(1, 5)*2 # 가능(numpy array 연산)

4. 코딩도장
코딩도장 11장에 range에는 +연산자를 사용할 수 없다 나와있다. 그러나 itertools.chain을 사용하면 이을 수 있다.

range(0, 10) + range(10, 20)
# 실행결과
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    range(0, 10) + range(10, 20)
TypeError: unsupported operand type(s) for +: 'range' and 'range' 

itertools.chain을 사용

import itertools
a = itertools.chain(range(0, 10), range(10, 20))
print(list(a))
# 실행결과
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

이어주고 나서 출력을 위해서는 list형태로 출력해야 한다. 그리고 +연산자를 사용하는 것도 아니다. 이럴거면 그냥 range()에 list형태로 바꿔주는 list()를 사용하는게 더 나을 것 같은데?!

출처
range와 np.arange의 차이
코딩도장 11장

profile
안녕하세요 :-) 잘 부탁드립니다!

0개의 댓글