Python(9)匿名関数および匿名関数と内蔵関数の結合

5356 ワード

一、匿名関数
匿名関数匿名関数:関数の定義を簡略化する
たとえば、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パラメータ:戻り値
 
再帰関数:一般関数の表現形式
自己呼び出し