15 Oct 2017 » python

2017-10-15-python

파이썬의 내장 함수에 대해 알아 보자.

  • 별도의 import가 필요없는 python 내장 함수

abs

  • abs(x)는 어떤 숫자를 입력으로 받았을 때, 그 숫자의 절대값을 돌려주는 함수
In [1]:
abs(3), abs(-3), abs(-1.2)
Out[1]:
(3, 3, 1.2)

all

  • all(x)은 반복 가능한(iterable) 자료형 x를 입력 인수로 받으며, x가 모두 참이면 True, 거짓이 하나라도 있으면 False를 리턴한다.
  • 반복 가능한 자료형이란 for문으로 그 값을 출력할 수 있는 것을 의미
    • list, tuple, string, dictionary, set 등
In [2]:
all([1, 2, 3])
Out[2]:
True
In [3]:
all([1, 2, 3, 0])
Out[3]:
False
  • [1, 2, 3, 0] 중에서 0은 거짓이므로 False를 리턴한다.
In [4]:
all([0])
Out[4]:
False

any

  • any(x)는 x 중 하나라도 참이 있을 경우 True를 리턴하고, x가 모두 거짓일 경우에만 False를 리턴한다. all(x)의 반대 경우
In [5]:
any([1, 2, 3, 0])
Out[5]:
True
  • [1, 2, 3, 0] 중에서 1, 2, 3이 참이므로 True를 리턴한다.
In [6]:
any([0, ""])
Out[6]:
False
  • [0, ""]의 요소 0과 ""은 모두 거짓이므로 False를 리턴

chr

  • chr(i)는 아스키(ASCII) 코드값을 입력으로 받아 그 코드에 해당하는 문자를 출력하는 함수이다.
    • 아스키 코드란 0에서 127 사이의 숫자들을 각각 하나의 문자 또는 기호에 대응시켜 놓은 것
In [7]:
chr(97), chr(48)
Out[7]:
('a', '0')

ord

  • ord(c)는 문자의 아스키 코드값을 리턴하는 함수이다.
  • chr 함수와 반대
In [8]:
ord('a'), ord('0')
Out[8]:
(97, 48)

dir

  • dir은 객체가 자체적으로 가지고 있는 변수나 함수를 보여 준다.
    • 아래는 리스트와 딕셔너리 객체의 관련 함수들을 보여준다.
In [9]:
dir([1, 2, 3])[:5]
Out[9]:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__']
In [10]:
dir({'1':'a'})[:5]
Out[10]:
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__']

divmod

  • divmod(a, b)는 2개의 숫자를 입력으로 받는다.
  • a를 b로 나눈 몫과 나머지를 튜플 형태로 리턴하는 함수
In [11]:
divmod(7, 3)
Out[11]:
(2, 1)
In [12]:
divmod(1.3, 0.2)
Out[12]:
(6.0, 0.09999999999999998)

enumerate

  • 순서가 있는 자료형(리스트, 튜플, 문자열)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 리턴
  • 보통 enumerate 함수는 for문과 자주 사용
In [13]:
a = ['body', 'foo', 'bar']
for i, name in enumerate(a):
    print (i, name)
0 body
1 foo
2 bar

eval

  • eval(expression)은 실행 가능한 문자열을 입력으로 받아 문자열을 실행한 결과값을 리턴한다.
In [14]:
eval('1+2')
Out[14]:
3
In [15]:
eval(" 'hi' + 'a' ")
Out[15]:
'hia'
In [16]:
eval('divmod(4, 3)')
Out[16]:
(1, 1)

filter

  • filter(함수명, 반복 가능한 자료형)
  • 두 번째 인수인 반복 가능한 자료형 요소들이 첫 번째 인수인 함수에 입력되었을 때, 리턴값이 참인 것만 걸러내서 돌려준다.

다음을 보면 filter의 유용함을 알 수 있다.

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))
[1, 2, 6]

filter 사용

In [18]:
def positive(x):
    return x > 0

print(list(filter(positive, b)))
[1, 2, 6]
In [19]:
print(list(filter(lambda x: x > 0, b)))
[1, 2, 6]

hex

  • hex(x)는 정수값을 입력받아 16진수(hexadecimal)로 변환하여 리턴
In [20]:
hex(234), hex(3)
Out[20]:
('0xea', '0x3')

id

  • id(object)는 객체를 입력받아 객체의 고유 주소값(레퍼런스)을 리턴
In [21]:
a = 3
b = a
In [22]:
id(3), id(a), id(b)
Out[22]:
(4411808384, 4411808384, 4411808384)
  • 위에서 보듯이 모두 같은 주소값을 가리키고 있다.
In [23]:
id(4)
Out[23]:
4411808416
  • 4는 3과 다른 객체이므로 당연히 다른 주소값을 출력한다.

input

  • input([prompt])은 사용자 입력을 받는 함수
    • [ ] 기호는 괄호 안의 내용을 생략할 수 있다는 관례적인 표기법임을 기억하자.
  • 입력 인수로 문자열을 주면 아래의 세 번째 예에서 볼 수 있듯이 그 문자열은 프롬프트가 된다.
  • input 대신 raw_input을 사용!
In [24]:
a = input()
hi
In [25]:
a
Out[25]:
'hi'
In [26]:
b = input("Enter: ")
Enter: hi
In [27]:
b
Out[27]:
'hi'

int

  • int(x)는 문자열 형태의 숫자나 소수점이 있는 숫자 등을 정수 형태로 리턴하는 함수
  • 정수를 입력으로 받으면 그대로 리턴한다.
In [28]:
int('3'), int(3.4)
Out[28]:
(3, 3)

int(x, radix)는 radix 진수로 표현된 문자열 x를 10진수로 변환하여 리턴한다.

  • 2진수로 표현된 '11'의 10진수 값은 다음과 같이 구한다.
In [29]:
# 2진수 11을 10진수로 바꿔라!
int('11', 2)
Out[29]:
3
In [30]:
# 16진수 값을 10진수로 바꿔라!
int('1A', 16)
Out[30]:
26

isinstance

  • isinstance(object(인스턴스), class(클래스명))
  • 입력으로 받은 인스턴스가 그 클래스의 인스턴스인지를 판단하여 참이면 True, 거짓이면 False를 리턴한다.
In [31]:
class Person:
    pass

a = Person()
In [32]:
isinstance(a, Person)
Out[32]:
True
In [33]:
b = 3
isinstance(b, Person)
Out[33]:
False

lambda

  • lambda는 함수를 생성할 때 사용하는 예약어로, def와 동일한 역할을 한다.
  • 보통 함수를 한줄로 간결하게 만들 때 사용한다.
  • def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.
In [34]:
sum_cal = lambda a, b: a+b
In [35]:
sum_cal(3,4)
Out[35]:
7

list 요소로 lambda를 넣고 연산을 할 수도 있다.

In [36]:
myList = [lambda a,b : a+b, lambda a,b : a*b]
In [37]:
myList[1](3,4)
Out[37]:
12

len

  • len(s)은 입력값 s의 길이(요소의 전체 개수)를 리턴하는 함수이다.
In [38]:
len("python"), len([1,2,3]), len((0, 'ab'))
Out[38]:
(6, 3, 2)

list

  • list(s)는 반복 가능한 자료형 s를 입력받아 리스트로 만들어 리턴하는 함수이다.
In [39]:
list("python")
Out[39]:
['p', 'y', 't', 'h', 'o', 'n']
In [40]:
list((1,2,3))
Out[40]:
[1, 2, 3]

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)
[2, 4, 6, 8]
In [42]:
# map 사용
def two_times(x):
    return x*2

list(map(two_times, c))
Out[42]:
[2, 4, 6, 8]
In [43]:
list(map(lambda x: x*2, c))
Out[43]:
[2, 4, 6, 8]

map을 활용하여 다음 함수도 만들어보자.

  • 리스트의 각 원소값을 1씩 증가시키는 함수를 만들어보자.
In [44]:
d = [1, 2, 3, 4, 5]

list(map(lambda x : x+1, d))
Out[44]:
[2, 3, 4, 5, 6]

max와 min

In [45]:
max([1, 2, 3]), min([1, 2, 3])
Out[45]:
(3, 1)
In [46]:
max("python"), min("python")
Out[46]:
('y', 'h')

oct

  • oct(x)는 정수 형태의 숫자를 8진수 문자열로 바꾸어 리턴하는 함수
In [47]:
oct(34), oct(12345)
Out[47]:
('0o42', '0o30071')

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')

pow

  • pow(x, y)는 x의 y 제곱한 결과값을 리턴하는 함수
In [48]:
pow(2, 4), pow(3, 3)
Out[48]:
(16, 27)

range

  • range([start,] stop [,step])
  • range는 for문과 함께 자주 사용
  • 입력받은 숫자에 해당되는 범위의 값을 반복 가능한 객체로 만들어 리턴
In [49]:
# 인수가 1개
list(range(5))
Out[49]:
[0, 1, 2, 3, 4]
In [50]:
# 인수가 2개
list(range(5, 10))
[5, 6, 7, 8, 9]
Out[50]:
[5, 6, 7, 8, 9]
In [51]:
# 인수가 3개
list(range(1, 10, 2))
Out[51]:
[1, 3, 5, 7, 9]
In [52]:
list(range(0, -10, -1))
Out[52]:
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

sorted

  • 입력값을 정렬한 후 그 결과를 리스트로 리턴하는 함수이다.
In [53]:
sorted([3, 1, 2]), sorted(['a', 'c', 'b'])
Out[53]:
([1, 2, 3], ['a', 'b', 'c'])

리스트 자료형에도 sort라는 함수가 있다.

  • 하지만 리스트 자료형의 sort 함수는 리스트 객체 그 자체를 정렬만 할 뿐 정렬된 결과를 리턴하지는 않는다.

다음 예제로 sorted 함수와 리스트 자료형의 sort 함수의 차이점을 확인해 보자.

In [54]:
a = [3, 1, 2]
result = a.sort()
print(result)
None
In [55]:
a
Out[55]:
[1, 2, 3]
  • sort 함수는 리턴값이 없기 때문에 result 변수에 저장되는 값이 없다.
  • 따라서 print(result)를 하면 None이 출력된다.
  • sort 함수를 수행한 후 리턴값은 없지만 리스트 객체 a를 확인하면 [3, 1, 2]가 [1, 2, 3]으로 정렬된 것을 볼 수 있다.

str

  • str(object)은 문자열 형태로 객체를 변환하여 리턴하는 함수이다.
In [56]:
str(3), str('hi'), str('hi'.upper())
Out[56]:
('3', 'hi', 'HI')

tuple

  • tuple(iterable)은 반복 가능한 자료형을 입력받아 튜플 형태로 바꾸어 리턴하는 함수이다.
  • 만약 튜플이 입력으로 들어오면 그대로 리턴한다.
In [57]:
tuple("abc"), tuple([1, 2, 3]), tuple((1, 2, 3))
Out[57]:
(('a', 'b', 'c'), (1, 2, 3), (1, 2, 3))

type

  • type(object)은 입력값의 자료형이 무엇인지 알려주는 함수이다.
In [58]:
type("abc"), type([ ]), type(open("test", 'w'))
Out[58]:
(str, list, _io.TextIOWrapper)

zip

  • zip(iterable*)은 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 한다.
In [59]:
list(zip([1, 2, 3], [4, 5, 6]))
Out[59]:
[(1, 4), (2, 5), (3, 6)]
In [60]:
list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
Out[60]:
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
In [61]:
list(zip("abc", "def"))
Out[61]:
[('a', 'd'), ('b', 'e'), ('c', 'f')]


Related Posts