f = lambda x: x + 1
print f(1)
2
g = lambda x, y: x + y
print g(1, 2)
3
incr = lambda x, inc = 1: x + inc
print incr(10) #inc 기본 인수 값으로 1 사용
print incr(10, 5)
11 15
vargs = lambda x, *args: args
print vargs(1,2,3,4,5)
(2, 3, 4, 5)
def f1(x):
return x*x + 3*x - 10
def f2(x):
return x*x*x
def g(func):
return [func(x) for x in range(-10, 10)]
print g(f1)
print g(f2)
[60, 44, 30, 18, 8, 0, -6, -10, -12, -12, -10, -6, 0, 8, 18, 30, 44, 60, 78, 98] [-1000, -729, -512, -343, -216, -125, -64, -27, -8, -1, 0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
def g(func):
return [func(x) for x in range(-10, 10)]
print g(lambda x: x*x + 3*x - 10)
print g(lambda x: x*x*x)
[60, 44, 30, 18, 8, 0, -6, -10, -12, -12, -10, -6, 0, 8, 18, 30, 44, 60, 78, 98] [-1000, -729, -512, -343, -216, -125, -64, -27, -8, -1, 0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
# 더하기, 빼기, 곱하기, 나누기에 해당하는 람다 함수 리스트 정의
func = [lambda x, y: x + y, lambda x, y: x - y, lambda x, y: x * y, lambda x, y: x / y]
def menu():
print "0. add"
print "1. sub"
print "2. mul"
print "3. div"
print "4. quit"
return input('Select menu:')
while 1:
sel = menu()
if sel < 0 or sel > len(func):
continue
if sel == len(func):
break
x = input('First operand:')
y = input('Second operand:')
print 'Result =', func[sel](x,y)
0. add 1. sub 2. mul 3. div 4. quit
def f(x):
return x * x
X = [1, 2, 3, 4, 5]
Y = map(f, X)
print Y
[1, 4, 9, 16, 25]
def f(x):
return x * x
X = [1, 2, 3, 4, 5]
Y = []
for x in X:
y = f(x)
Y.append(y)
print Y
[1, 4, 9, 16, 25]
X = [1, 2, 3, 4, 5]
print map(lambda x: x * x, X)
[1, 4, 9, 16, 25]
Y = map(lambda x: x * x + 4 * x + 5, range(10))
print Y
[5, 10, 17, 26, 37, 50, 65, 82, 101, 122]
y = map(lambda x: len(x), ["Hello", "Python", "Programming"])
print y
[5, 6, 11]
print filter(lambda x: x > 2, [1, 2, 3, 34])
y = []
for x in [1, 2, 3, 34]:
if x > 2:
y.append(x)
print y
[3, 34]
print filter(lambda x: x % 2, [1, 2, 3, 4, 5, 6])
print filter(lambda x: x % 2 - 1, [1, 2, 3, 4, 5, 6])
def F():
x = 1
print filter(lambda a: a > x, range(-5, 5))
F()
[2, 3, 4]
print filter(lambda x: x > 2, [1, 2, 3, 34])
print filter(lambda x: x > 2, (1, 2, 3, 34))
print filter(lambda x: x < 'a', 'abcABCdefDEF')
[3, 34] (3, 34) ABCDEF
print reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
15
단계 | x | y | reduce |
---|---|---|---|
1 | 0 | 1 | 1 |
2 | 1 | 2 | 3 |
3 | 3 | 3 | 6 |
4 | 6 | 4 | 10 |
5 | 10 | 5 | 15 |
print reduce(lambda x, y: x + y, [1, 2, 3, 4, 5], 100)
115
print reduce(lambda x, y: x + y * y, range(1, 11), 0)
385
x = 0
for y in range(1, 11):
x = x + y * y
print x
385
print reduce(lambda x, y: y + x, 'abcde')
edcba
단계 | x | y | reduce |
---|---|---|---|
1 | '' | 'a' | 'a' |
2 | 'a' | 'b' | 'ba' |
3 | 'ba' | 'c' | 'cba' |
4 | 'cba' | 'd' | 'dcba' |
5 | 'dcba' | 'e' | 'edcba' |
참고 문헌: 파이썬(열혈강의)(개정판 VER.2), 이강성, FreeLec, 2005년 8월 29일