파이썬 빌트인 함수 모음
여기서는 파이선 빌트인 함수들에 대해 간단히 논해 보자.
range
integer stop
, start
, step
을 인자로 받아서 조건에 맞는 iterator를 리턴해 준다.
range(stop)
첫 번째는 단순하게 0부터 1씩 증가해서 stop까지 도달하는 iterator를 돌려준다.
range(start, stop[, step])
start부터 step만큼 증가해서 stop까지 도달하는 iterator를 돌려준다. step은 생략 가능하므로 []로 표현되어 있다.
간단한 예를 살펴보자.
>>> a = range(10)
>>> a
range(0, 10)
>>> list(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5,10))
[5, 6, 7, 8, 9]
>>> list(range(-10,10, 3))
[-10, -7, -4, -1, 2, 5, 8]
range()는 리스트를 돌려주는 함수가 아니다. 정확히 말하면 Range
타입을 리턴해 준다. 리스트 전체를 돌려주지 않고, 값을 ㅇ청할 때 다음 값을 생성해서 전달하므로 1~1000000까지의 리스트를 만드는 것보다 range(1,1000000)를 쓰는 것이 효율적이며, 이 숫자가 크면 클수록 더욱 효율적이 된다.
sum
iterable의 합을 구한다.
sum(iterable[, start])
start는 생략 가능하다.
iterable은 반복 가능한 것들을 말한다. 반복 가능한 것들이라 함은 자신이 가진 멤버를 한 번에 하나씩 가져올 수 있는 것들을 말하는데, 예를 들어 list가 있겠다. 그 외에도 str(문자를 하나씩 가져올 수 있다.), tuple, dict 등 여러가지가 있다.
>>> c = {'a': 1, 'b': 2}
>>> c.values()
dict_values([1, 2])
>>> sum(c.values())
3
>>> d = {1: 2, 3:4, 5:6}
>>> sum(d)
9
>>> sum(range(4))
6
>>> (1,2) # tuple
(1, 2)
>>> sum((1,2))
3
iterable한 것들을 예를 들면 이런 것들이 있다.
- 모든 순차열 타입(list, str, tuple, 그리고 이들을 상속하는 것들)
- some non-sequence types(이를테면 dict와 같은 것들)
- iter(), getitem()등이 구현된 클래스의 오브젝트