파이썬의 내장 함수에 대해 알아 보자.¶
- 별도의 import가 필요없는 python 내장 함수
abs¶
- abs(x)는 어떤 숫자를 입력으로 받았을 때, 그 숫자의 절대값을 돌려주는 함수
In [1]:
abs(3), abs(-3), abs(-1.2)
Out[1]:
all¶
- all(x)은 반복 가능한(iterable) 자료형 x를 입력 인수로 받으며, x가 모두 참이면 True, 거짓이 하나라도 있으면 False를 리턴한다.
- 반복 가능한 자료형이란 for문으로 그 값을 출력할 수 있는 것을 의미
- list, tuple, string, dictionary, set 등
In [2]:
all([1, 2, 3])
Out[2]:
In [3]:
all([1, 2, 3, 0])
Out[3]:
- [1, 2, 3, 0] 중에서 0은 거짓이므로 False를 리턴한다.
In [4]:
all([0])
Out[4]:
In [5]:
any([1, 2, 3, 0])
Out[5]:
- [1, 2, 3, 0] 중에서 1, 2, 3이 참이므로 True를 리턴한다.
In [6]:
any([0, ""])
Out[6]:
- [0, ""]의 요소 0과 ""은 모두 거짓이므로 False를 리턴
chr¶
- chr(i)는 아스키(ASCII) 코드값을 입력으로 받아 그 코드에 해당하는 문자를 출력하는 함수이다.
- 아스키 코드란 0에서 127 사이의 숫자들을 각각 하나의 문자 또는 기호에 대응시켜 놓은 것
In [7]:
chr(97), chr(48)
Out[7]:
In [8]:
ord('a'), ord('0')
Out[8]:
In [9]:
dir([1, 2, 3])[:5]
Out[9]:
In [10]:
dir({'1':'a'})[:5]
Out[10]:
In [11]:
divmod(7, 3)
Out[11]:
In [12]:
divmod(1.3, 0.2)
Out[12]:
enumerate¶
- 순서가 있는 자료형(리스트, 튜플, 문자열)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 리턴
- 보통 enumerate 함수는 for문과 자주 사용
In [13]:
a = ['body', 'foo', 'bar']
for i, name in enumerate(a):
print (i, name)
In [14]:
eval('1+2')
Out[14]:
In [15]:
eval(" 'hi' + 'a' ")
Out[15]:
In [16]:
eval('divmod(4, 3)')
Out[16]:
In [17]:
b = [1, -3, 2, 0, -5, 6]
def positive(l):
result = []
for i in l:
if i > 0:
result.append(i)
return result
print(positive(b))
filter 사용¶
In [18]:
def positive(x):
return x > 0
print(list(filter(positive, b)))
In [19]:
print(list(filter(lambda x: x > 0, b)))
In [20]:
hex(234), hex(3)
Out[20]:
In [21]:
a = 3
b = a
In [22]:
id(3), id(a), id(b)
Out[22]:
- 위에서 보듯이 모두 같은 주소값을 가리키고 있다.
In [23]:
id(4)
Out[23]:
- 4는 3과 다른 객체이므로 당연히 다른 주소값을 출력한다.
input¶
- input([prompt])은 사용자 입력을 받는 함수
- [ ] 기호는 괄호 안의 내용을 생략할 수 있다는 관례적인 표기법임을 기억하자.
- 입력 인수로 문자열을 주면 아래의 세 번째 예에서 볼 수 있듯이 그 문자열은 프롬프트가 된다.
- input 대신 raw_input을 사용!
In [24]:
a = input()
In [25]:
a
Out[25]:
In [26]:
b = input("Enter: ")
In [27]:
b
Out[27]:
In [28]:
int('3'), int(3.4)
Out[28]:
int(x, radix)는 radix 진수로 표현된 문자열 x를 10진수로 변환하여 리턴한다.¶
- 2진수로 표현된 '11'의 10진수 값은 다음과 같이 구한다.
In [29]:
# 2진수 11을 10진수로 바꿔라!
int('11', 2)
Out[29]:
In [30]:
# 16진수 값을 10진수로 바꿔라!
int('1A', 16)
Out[30]:
isinstance¶
isinstance(object(인스턴스), class(클래스명))
- 입력으로 받은 인스턴스가 그 클래스의 인스턴스인지를 판단하여 참이면 True, 거짓이면 False를 리턴한다.
In [31]:
class Person:
pass
a = Person()
In [32]:
isinstance(a, Person)
Out[32]:
In [33]:
b = 3
isinstance(b, Person)
Out[33]:
lambda¶
- lambda는 함수를 생성할 때 사용하는 예약어로, def와 동일한 역할을 한다.
- 보통 함수를 한줄로 간결하게 만들 때 사용한다.
- def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.
In [34]:
sum_cal = lambda a, b: a+b
In [35]:
sum_cal(3,4)
Out[35]:
list 요소로 lambda를 넣고 연산을 할 수도 있다.¶
In [36]:
myList = [lambda a,b : a+b, lambda a,b : a*b]
In [37]:
myList[1](3,4)
Out[37]:
In [38]:
len("python"), len([1,2,3]), len((0, 'ab'))
Out[38]:
In [39]:
list("python")
Out[39]:
In [40]:
list((1,2,3))
Out[40]:
map¶
- map(f, iterable)
- 함수(f)와 반복 가능한(iterable) 자료형을 입력으로 받는다.
- 입력받은 자료형의 각 요소가 함수 f에 의해 수행된 결과를 묶어서 리턴하는 함수
리스트를 입력하면 각 원소에 2를 곱한 값을 리턴하는 함수를 만들어 보자.¶
In [41]:
def two_times(numberList):
result = [ ]
for number in numberList:
result.append(number*2)
return result
c = [1, 2, 3, 4]
result = two_times(c)
print(result)
In [42]:
# map 사용
def two_times(x):
return x*2
list(map(two_times, c))
Out[42]:
In [43]:
list(map(lambda x: x*2, c))
Out[43]:
map을 활용하여 다음 함수도 만들어보자.¶
- 리스트의 각 원소값을 1씩 증가시키는 함수를 만들어보자.
In [44]:
d = [1, 2, 3, 4, 5]
list(map(lambda x : x+1, d))
Out[44]:
max와 min¶
In [45]:
max([1, 2, 3]), min([1, 2, 3])
Out[45]:
In [46]:
max("python"), min("python")
Out[46]:
In [47]:
oct(34), oct(12345)
Out[47]:
open¶
- open(filename, [mode])
- "filename"과 "mode(읽기 방법)"을 입력받아 파일 객체를 리턴하는 함수
- mode의 default = r(읽기 전용 모드)
mode | 설명 |
---|---|
w | 쓰기 모드로 파일 열기 |
r | 읽기 모드로 파일 열기 |
a | 추가 모드로 파일 열기 |
b | 바이너리 모드로 파일 열기 |
In [ ]:
# 바이너리 읽기 모드
f = open("binary_file", "rb")
In [ ]:
# 아래 두개는 같은 열기 모드이다. (default = 'r')
fread = open("read_mode.txt", 'r')
fread2 = open("read_mode.txt")
In [ ]:
# 추가 모드로 파일 열기
fappend = open("append_mode.txt", 'a')
In [48]:
pow(2, 4), pow(3, 3)
Out[48]:
In [49]:
# 인수가 1개
list(range(5))
Out[49]:
In [50]:
# 인수가 2개
list(range(5, 10))
[5, 6, 7, 8, 9]
Out[50]:
In [51]:
# 인수가 3개
list(range(1, 10, 2))
Out[51]:
In [52]:
list(range(0, -10, -1))
Out[52]:
In [53]:
sorted([3, 1, 2]), sorted(['a', 'c', 'b'])
Out[53]:
In [54]:
a = [3, 1, 2]
result = a.sort()
print(result)
In [55]:
a
Out[55]:
- sort 함수는 리턴값이 없기 때문에 result 변수에 저장되는 값이 없다.
- 따라서 print(result)를 하면 None이 출력된다.
- sort 함수를 수행한 후 리턴값은 없지만 리스트 객체 a를 확인하면 [3, 1, 2]가 [1, 2, 3]으로 정렬된 것을 볼 수 있다.
In [56]:
str(3), str('hi'), str('hi'.upper())
Out[56]:
In [57]:
tuple("abc"), tuple([1, 2, 3]), tuple((1, 2, 3))
Out[57]:
In [58]:
type("abc"), type([ ]), type(open("test", 'w'))
Out[58]:
In [59]:
list(zip([1, 2, 3], [4, 5, 6]))
Out[59]:
In [60]:
list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
Out[60]:
In [61]:
list(zip("abc", "def"))
Out[61]: