Quiz
아래 코드의 실행 결과를 예측해 본 후 코드를 작성해서 예측과 결과를 비교해보자.
lst1 = [1, 2, 3]
lst2 = [4, 5]
print( lst1 + lst2 )
print( lst1.append(lst2) )
튜플(tuple)
튜플은 리스트와 비슷한 자료형이다. 리스트와 다른 점은 한번 결정한 요소의 값을 변경할 수 없다는 점이 다르다. 튜플은 함수와 함께 사용되면 다음과 같은 형태로 생성한다.
(요소값, 요소값, 요소값, ...)
참고
한 줄에 N개의 statement(문장)을 표현하고 싶다. 여기서 N>=2인 양의 정수
# before
a = 10, b = 20 # error
print('a = {}, b = {}'.format(a, b))
# after
b, a = a, b
print('a = {}, b = {}'.format(a, b))
File "<ipython-input-84-2d8eb3ec729f>", line 2 a = 10, b = 20 # error ^ SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
# before
a = 10; b = 20
print('a = {}, b = {}'.format(a, b))
# after
b, a = a, b
print('a = {}, b = {}'.format(a, b))
a = 10, b = 20 a = 20, b = 10
# before
a = 10; b = 20;
print('a = {}, b = {}'.format(a, b));
# after
b, a = a, b;
print('a = {}, b = {}'.format(a, b));
a = 10, b = 20 a = 20, b = 10
- 튜플과 함수
함수에서 여러 개의 값을 반환할 때 튜플 형 데이터를 자주 사용한다.
def test():
math = 80
engl = 90
return (math, engl)
math, engl = test()
print('math = {}, engl = {}'.format(math, engl))
math = 80, engl = 90
filter() 함수와 map() 함수
함수를 매개변수로 사용하는 대표적인 표준 함수(내장 함수)로 map() 함수와 filter() 함수가 있다.
- map()함수는 리스트의 요소를 함수에 넣고 반한된 값으로 새로운 리스트를 구성해주는 함수
- map(함수, 리스트)
- filter() 함수는 리스트의 요소를 함수에 전달하고 리턴된 값이 True인 요소로 구성된 새로운 리스트를 반환하는 함수
- filter(함수, 리스트)
# map()을 설명하기 위한 코드
def power(item):
return item * item
lst = [1, 2, 3, 4, 5]
output = map(power, lst)
print(output)
print(list(output))
<map object at 0x7f48734aee80> [1, 4, 9, 16, 25]
# map()을 설명하기 위한 코드
# y = 2x + 3
def func(x):
return 2*x + 3
x = [0, 1, 2, 3, 4, 5]
y = list( map(func, x) )
print(y)
[3, 5, 7, 9, 11, 13]
# filter()를 설명하기 위한 코드
def under_3(item):
return item < 3
lst = [1, 2, 3, 4, 5]
output = filter(under_3, lst)
print(output)
print(list(output))
<filter object at 0x7f48900c3040> [1, 2]
# filter()를 설명하기 위한 코드
def under_3(item):
return item < 3 or 4 < item
lst = [1, 2, 3, 4, 5]
output = filter(under_3, lst)
print(output)
print(list(output))
<filter object at 0x7f48734ab580> [1, 2, 5]
람다
요즘 프로그래밍에서는 함수를 매개변수에 할당하여 다른 함수에 전달하는 코드를 많이 사용한다. 그리고 이런 코드를 조금 더 효율적으로 작성할 수 있도록 파이썬은 람다(lambda)라는 기능을 제공한다.
매개변수로 함수를 전달하기 위해 해당 함수를 코딩하는 하는 것도 번거롭고 코딩 공간 낭비라는 생각을 하는 사람들이 많아졌다. 그래서 심플한 방법을 생각하게 되었고 그래서 등장한 개념이 람다(lambda)이다. 람다라는 개념은 '간단한 함수는 심플한 문법으로 쉽게 만들 수 있게 하자'다.
**lambda** 매개변수: 리턴값
함수의 매개변수로 함수 전달하기
먼저 함수를 매개변수로 다른 함수에 전달한다는 것이 무엇이지 확인해보겠다. 아래 코드 셀의 코드에서 call_10_times(print_hello) 이렇게 함수를 호출함으로써 print_hello()함수를 call_10_times(func)함수로 전달하고 있다. call_10_times()는 자신의 매개변수 func를 통해 print_hello() 함수를 전달 받는다.
함수에 전달되는 함수를 콜백함수(callback function)라고 한다.
def power(x):
return x*x
x = range(10)
y = map(power, x)
print(list(y))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
power = lambda x : x*x
x = range(10)
y = map(power, x)
print(list(y))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
x = range(10)
y = map(lambda x:x*x, x)
print(list(y))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Quiz
lambda 개념을 활용하여 아래 코드를 수정하세요.
def under_3(item):
return item < 3
lst = [1, 2, 3, 4, 5]
output =filter(under_3, lst)
print(list(output))
lst = range(1,6)
output = filter(lambda item:item<3, lst)
print(list(output))
[1, 2]
결론! 람다를 활용한 코드는 가독성이 높은 간단 명료한 코드가 된다는 것입. 복잡한 코드를 실행하는 함수를 lambda 함수로 만드는 것은 비효율적이지만 구현 코드가 간단한 함수를 다른 함수에 전달할 때는 유용.
'빅데이터 분석가 양성과정 > Python' 카테고리의 다른 글
Ch06-2 예외 처리 / 예외 고급 (1) | 2024.07.05 |
---|---|
Ch06-1 예외처리 / 구문 오류와 예외 (0) | 2024.07.05 |
Ch05-1 함수 / 함수 만들기 (0) | 2024.07.05 |
Ch04-4 반복문 / 문자열, 리스트, 딕셔너리 (3) | 2024.07.05 |
CH04-3 반복문 / 범위 자료형과 while 반복문 (0) | 2024.07.05 |