함수란 특정한 작업을 하나의 단위로 묶어 놓은 것
함수를 사용하면 불필요한 소스코드의 반복을 줄일 수 있음
내장 함수
사용자 정의 함수
def 함수명(매개변수):
실행할 소스코드
return 반환 값
def add (a,b):
return a + b
result = add(1,2)
print(result)
3
def add(a,b):
print('결과:', a+b)
add(b=2, a=1)
결과 : 3
a = 0
def func():
global a ## 참조하겠다
a += 1
for i in range(10):
func()
print(a)
10
*****
array = [1,2,3,4]
def func():
global array
array.append(5)
print(array)
func()
[1, 2, 3, 4, 5]
array = [1,2,3,4]
def func():
array = [5,6,7]
array.append(8)
print(array)
func()
[5, 6, 7, 8]
def oper(a, b):
add_var = a + b
sub_var = a - b
return add_var,sub_var
a,b = oper(3,7)
print(a,b)
10 -4
람다 푠현식을 이용하면 함수를 간단하게 작성할 수 있음
매우 효과적으로 사용되는 경우는 어떠한 함수 자체를 입력으로 받는 또 다른 함수가 존재할 수 있는데 효과적으로 사용될 수 있음
def add (a,b):
return a + b
## 일반적인 add() 메서드 사용
print(add(1,2))
## 람다 표현식으로 구현
print((lambda a,b : a +b )(1,2))
3
3
sorted()
함수array = [('lee', 11),('eui', 2),('joo', 35)]
def kkey(x):
return x[1]
print(sorted(array, key = kkey))
## 람다함수로 구현했을 때
print(sorted(array, key = lambda x: x[1]))
[('eui', 2), ('lee', 11), ('joo', 35)]
[('eui', 2), ('lee', 11), ('joo', 35)]
list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]
result = map(lambda a,b : a+b ,list1, list2)
print(list(result))
[7, 9, 11, 13, 15]
#sum
result = sum([1,2,3,4,5])
print(result)
# mix max
min_result = min(1,2,3,4)
max_result = max(1,2,3,4)
print(min_result,max_result)
# eval()
result = eval("(3+5)*7")
print(result)
# sorted()
result = sorted([2,5,3,6,7])
reverse_result = sorted([2,5,3,6,7], reverse=True)
print(result)
print(reverse_result)
# sorted with key
array = [('lee', 11),('eui', 2),('joo', 35)]
print(sorted(array, key = lambda x : x[1], reverse=True))
15
1 4
56
[2, 3, 5, 6, 7]
[7, 6, 5, 3, 2]
[('joo', 35), ('lee', 11), ('eui', 2)]
순열 : 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것
from itertools import permutations
data = ['A', 'B', 'C']
result = list(permutations(data,3))
print(result)
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
from itertools import product
data = ['A', 'B', 'C']
## 2개를 뽑는 모든 순열 구하기
## 중복 허용
result = list(product(data, repeat=2))
print(result)
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
from itertools import combinations
data = ['A', 'B', 'C']
result = list(combinations(data,2))
print(result)
[('A', 'B'), ('A', 'C'), ('B', 'C')]
from itertools import combinations_with_replacement
data = ['A', 'B', 'C']
## 2개를 뽑는 모든 조합 구하기
## 중복 허용
result = list(combinations_with_replacement(data,2))
print(result)
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
from collections import Counter
counter = Counter(['A','A','B','C','C','C'])
print(counter['A'])
print(counter['B'])
print(counter['C'])
print(dict(counter))
2
1
3
{'A': 2, 'B': 1, 'C': 3}
팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수부터 파이(pi) 와 같은 상수를 포함한다.
최대 공약수
gcd()
함수를 이용할 수 있다import math
def lcm(a,b):
return a * b // math.gcd(a,b)
a = 10
b = 40
print(math.gcd(10,40)) # 최대공약수 계산
print(lcm(10, 40)) # 최소 공배수 계산
10
40
서적 : 이것이 코딩 테스트다 with 파이썬
채널 : '동빈나' YouTube Channel