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.
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.
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()
를 사용하는게 더 나을 것 같은데?!