Python入門到精通Day12:06-15-lambda
三、lambda表示式
3.1 lambda的應用場景
如果一個函式有一個返回值,並且只有一句程式碼,可以使用lambda簡化。(可以簡化程式碼,又可以節省伺服器記憶體開銷。)
3.2 lambda語法
lambda 引數列表 : 表示式
表示式必須有返回值。
注意:
lambda表示式的引數可有可無,函式的引數在lambda表示式中完全適用。
lambda表示式能接收任何數量的引數但只能返回一個表示式的值。
# 1. 函式
def fn1():
return 100
result = fn1()
print(result) # 100
print(fn1) # <function fn1 at 0x000001E4D0FB7280>
print(fn1()) # 100
# 2. lambda表示式 匿名函式
fn2 = lambda: 100
print(fn2) # <function <lambda> at 0x0000020859EB9040> # lambda記憶體地址
# 100返回值 呼叫函式
print(fn2()) # 100
注意:直接列印lambda表示式,輸出的是此lambda的記憶體地址。
3.3示例:計算a + b
3.3.1 函式實現
def add(a, b):
return a + b
result = add(1, 2)
print(result) # 3
思考:需求簡單,是否程式碼多?
3.3.2 lambda實現
fn1 = lambda a, b: a + b
print(fn1(1, 2)) # 3
3.4 lambda的引數形式
3.4.1 無引數
fn1 = lambda: 100
print(fn1()) # 100
3.4.2 一個引數
fn2 = lambda a: a
print(fn2('hello world!')) # hello world!
3.4.3 預設引數(預設引數)
fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20)) # 130
print(fn1(10, 20, 200)) # 230
3.4.4 可變引數:*args
fn1 = lambda *args: args
print(fn1(10, 20, 30)) # (10, 20, 30)
print(fn1(10, 20, 30, 40)) # (10, 20, 30, 40)
注意:這裡的可變引數傳入到lambda之後,返回值為元組。
3.4.5 可變引數: **kwargs
fn1 = lambda **kwargs: kwargs
print(fn1(name='Python')) # {'name': 'Python'}
print(fn1(name='Python', age=30)) # {'name': 'Python', 'age': 30}
3.5 lambda的應用
3.5.1 帶判斷的lambda
# lambda 兩個數字比大小,誰大返回誰
fn1 = lambda a, b: a if a > b else b
print(fn1(1000, 500)) # 1000
print(fn1(20, 50)) # 50
3.5.2 列表資料按字典key的值排序
student = [
{'name':'TOM', 'age':20},
{'name':'ROSE', 'age':19},
{'name':'Jack', 'age':22},
]
# sort(key=lambda..., reverse=bool資料)
# 1. name key 對應的值進行升序排序
student.sort(key=lambda x: x['name'])
print(student)
# [{'name': 'Jack', 'age': 22}, {'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}]
# 2. name key 對應的值進行降序排序
student.sort(key= lambda x: x['name'], reverse=True)
print(student)
# [{'name': 'TOM', 'age': 20}, {'name': 'ROSE', 'age': 19}, {'name': 'Jack', 'age': 22}]
# 3, age key對應的值進行升序排序
student.sort(key= lambda x: x['age'])
print(student)
# [{'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}, {'name': 'Jack', 'age': 22}]
相關文章
- Python從入門到精通Python
- Python小白菜鳥從入門到精通Python
- Promise從入門到精通Promise
- LESS從入門到精通
- Git 從入門到精通Git
- SAP從入門到精通
- Thymeleaf從入門到精通
- Eclipse從入門到精通Eclipse
- kafka快速入門到精通Kafka
- vim從入門到精通
- Shell從入門到精通
- 【Python從入門到精通】(七)Python字典(dict)讓人人都Python
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- Kaizen如何從入門到精通?AI
- Linux從入門到精通(二)Linux
- ElasticSearch 7.8.1 從入門到精通Elasticsearch
- RabbitMQ 從入門到精通 (一)MQ
- ActiveMQ從入門到精通(一)MQ
- ActiveMQ從入門到精通(二)MQ
- Celery框架從入門到精通框架
- 【Python從入門到精通】(二十五)Python多程式的使用Python
- 自學Python需要多長時間從入門到精通?Python
- 學習Python從入門到精通需要多長時間?Python
- 尚矽谷 springboot 從入門到精通Spring Boot
- Spark SQL | Spark,從入門到精通SparkSQL
- Flink從入門到精通系列文章
- Hello Spark! | Spark,從入門到精通Spark
- WIFI滲透從入門到精通WiFi
- Docker從入門到精通(五)——DockerfileDocker
- Docker容器使用 (入門到精通)Docker
- Prometheus從入門到精通:一、部署Prometheus
- Python入門到精通Day6:01-05-列表簡介Python
- Redis從入門到精通:中級篇Redis
- Vue學習從入門到精通(一)Vue
- Docker 從入門到精通(一)基本操作Docker
- Java 從入門到精通-反射機制Java反射
- Redis從入門到精通:初級篇Redis
- vue+webpack 從入門到精通(二)VueWeb