Python(9)匿名関数および匿名関数と内蔵関数の結合
5356 ワード
一、匿名関数
匿名関数匿名関数:関数の定義を簡略化する
たとえば、1つの関数に1行または少ないコードしかありません.
フォーマット:lambdaパラメータ...:返された結果
パラメータとして匿名関数
二、匿名関数と内蔵関数の結合使用
max()最大値関数
map()リストを巡回し、リストを操作する
reduce()リスト内の要素を加算減算する演算の関数
reduce()関数、パッケージfrom functools import reduceをインポートする必要があります
ろ過器
sorted()ソート
三、再帰関数
再帰関数の特徴:
1、自己呼び出し自身
2、再帰関数は必ず終点を設定しなければならない
3、入り口は通常あります
例:任意の数字を決定し、1~nの累積和から
四、関数のまとめ
匿名関数は組み込み関数と組み合わせて使用できます
内蔵関数には、max()min()sorted()map()reduce()filter()
要約関数:
一般関数:def func():pass
def関数名([パラメータ......]):
かんすうたい
1、関数の定義方法
2、呼び出し関数
パラメータ:1)パラメータなし
def func(): pass
func()呼び出し
2)パラメータあり
def func(a, b): pass
func(1, 2)
可変パラメータ:
def func(*args,**kwargs):*args:単一要素**kwargs:キーワードパラメータ
pass
func()
func(1)
func(a = 1)
デフォルトのパラメータ:
def func(a = 10, b = 20):
pass
func()
func(100)
キーワードパラメータ:
func(b = 99)
戻り値:return
戻り値がありません:
def func():
print("------")
x = func() ---> x = None
戻り値:
def func():
return 'a', 'b'
x = func() --->('a', 'b')
変数の役割ドメイン
global nonlocal
globals()グローバル変数を表示locals()ローカル変数を表示
LEGB
L:localローカル変数
E:encloseingネスト
G:globalグローバル
B:built-in内蔵
ネストされた関数:——(内層関数を返す)——>閉パッケージ——(関数をパラメータとして渡す)——>アクセラレータ
def func():
def wrapper():
pass
return wrapper
装飾:
たんそうかざり
def decorate():
def wrapper(*args, **kwargs):
pass
return wrapper
@decorate
def house():
pass
@decorate
def f1(a, b):
pass
たそうふくき
@zhuang1
@zhuang2
def f1(a, b):
pass
装飾テープパラメータ:
def outer(a):
def decorate(func):
def wrapper(*args, **kwargs):
pass
return wrapper
return decorate
@zhuang(10)
def house():
pass
@zhuang(100)
def street(10000): pass
匿名関数匿名関数:lambdaパラメータlambdaパラメータ:結果を返す結果を返す
LambdaパラメータLambdaパラメータ:戻り値
再帰関数:一般関数の表現形式
自己呼び出し
匿名関数匿名関数:関数の定義を簡略化する
たとえば、1つの関数に1行または少ないコードしかありません.
フォーマット:lambdaパラメータ...:返された結果
def add(a, b):
s = a + b
return s
s = lambda a, b: a + b
print(s) #s function
result = s(1, 2)
print(result)
s1 = lambda a, b: a * b
result = s1(2, 5)
print(result)
パラメータとして匿名関数
def func(x, y, func):
print(x, y)
print(func)
s = func(x, y)
print(s)
#
func(1, 2, lambda a, b: a + b)
二、匿名関数と内蔵関数の結合使用
max()最大値関数
list1 = [3, 5, 8, 9, 0]
m = max(list1) #
list2 = [{"name1":18, "name2":10}, {"name1":13, "name2":20}, {"name1":9, "name2":29}]
# name1
m = max(list2, key = lambda x: x['name1']) # name1 value,
print(" :", m) # key name1
map()リストを巡回し、リストを操作する
list1 = [3, 5, 8, 9, 2]
result = map(lambda x: x + 2, list1)
print(result) # map
print(list(result)) # map
# , +1,
func = lambda x : x if x % 2 == 0 else x + 1
result = func(5)
print(result) # :6
# +1
result = map(lambda x : x if x % 2 == 0 else x + 1, list1)
print(list(result)) # :[4, 6, 8, 10, 2]
#
for index, i in enumerate(list1):
if i % 2 != 0:
list1[index] = i + 1
print(list1)
reduce()リスト内の要素を加算減算する演算の関数
reduce()関数、パッケージfrom functools import reduceをインポートする必要があります
from functools import reduce
tuple1 = (1, 3, 5, 6, 2)
result = reduce(lambda x, y : x + y, tuple1) #tuple1
print(result)
tuple2 = (1,) # :1
result = reduce(lambda x, y: x + y, tuple2, 10)
print(result) # :11
result = reduce(lambda x, y: x - y, tuple2, 10)
print(result) # :9 10-1
tuple3 = (1, 3)
result = reduce(lambda x, y: x - y, tuple3)
print(result) # :-2 1-3=-2
ろ過器
list2 = [12, 6, 8, 98, 34, 36, 2, 8, 0]
result = filter(lambda x: x > 10, list2)
print(result)
print(list(result))
#
def func_filter(list2):
list2_new = []
for i in list2:
if i > 10:
list2_new.append(i)
return list2_new
result = func_filter(list2)
print(result)
# 20
students = [
{"name":"name1", "age":20},
{"name":"name2", "age":19},
{"name":"name3", "age":13},
{"name":"name4", "age":23},
{"name":"name5", "age":21}
]
result = filter(lambda x : x['age'] > 20, students)
print(list(result))
sorted()ソート
#
students = [
{"name":"name1", "age":20},
{"name":"name2", "age":19},
{"name":"name3", "age":13},
{"name":"name4", "age":23},
{"name":"name5", "age":21}
]
students = sorted(students, key=lambda x : x['age'])
print(students)
三、再帰関数
再帰関数の特徴:
1、自己呼び出し自身
2、再帰関数は必ず終点を設定しなければならない
3、入り口は通常あります
例:任意の数字を決定し、1~nの累積和から
def sum(n): #1~n
if n == 0:
return 0
else:
return n + sum(n - 1)
result = sum(10)
print(result)
#
sum_number = 0
for i in range(11):
sum_number += i
print(sum_number)
四、関数のまとめ
匿名関数は組み込み関数と組み合わせて使用できます
内蔵関数には、max()min()sorted()map()reduce()filter()
要約関数:
一般関数:def func():pass
def関数名([パラメータ......]):
かんすうたい
1、関数の定義方法
2、呼び出し関数
パラメータ:1)パラメータなし
def func(): pass
func()呼び出し
2)パラメータあり
def func(a, b): pass
func(1, 2)
可変パラメータ:
def func(*args,**kwargs):*args:単一要素**kwargs:キーワードパラメータ
pass
func()
func(1)
func(a = 1)
デフォルトのパラメータ:
def func(a = 10, b = 20):
pass
func()
func(100)
キーワードパラメータ:
func(b = 99)
戻り値:return
戻り値がありません:
def func():
print("------")
x = func() ---> x = None
戻り値:
def func():
return 'a', 'b'
x = func() --->('a', 'b')
変数の役割ドメイン
global nonlocal
globals()グローバル変数を表示locals()ローカル変数を表示
LEGB
L:localローカル変数
E:encloseingネスト
G:globalグローバル
B:built-in内蔵
ネストされた関数:——(内層関数を返す)——>閉パッケージ——(関数をパラメータとして渡す)——>アクセラレータ
def func():
def wrapper():
pass
return wrapper
装飾:
たんそうかざり
def decorate():
def wrapper(*args, **kwargs):
pass
return wrapper
@decorate
def house():
pass
@decorate
def f1(a, b):
pass
たそうふくき
@zhuang1
@zhuang2
def f1(a, b):
pass
装飾テープパラメータ:
def outer(a):
def decorate(func):
def wrapper(*args, **kwargs):
pass
return wrapper
return decorate
@zhuang(10)
def house():
pass
@zhuang(100)
def street(10000): pass
匿名関数匿名関数:lambdaパラメータlambdaパラメータ:結果を返す結果を返す
LambdaパラメータLambdaパラメータ:戻り値
再帰関数:一般関数の表現形式
自己呼び出し