Python 匿名函数 (Lambda)
大家好!今天我们来聊聊匿名函数 (lambda)。 匿名函数在Python中是一种简洁的函数定义方式。 匿名函数适用于简单的操作,不需要命名。 它使用lambda关键字创建,语法为:lambda 参数: 表达式。 lambda经常出现在map, filter, reduce等高阶函数中。
在示 例中,我们使用lambda对字典列表按年龄排序。 同时,我们用lambda筛选出年龄大于25岁的人。 还可以结合多个条件,如年龄和城市进行筛选。 在示例中,我们使用lambda和字典解包操作符(**x)。 这允许我们基于原字典创建新字典,并将年龄翻倍。
lambda的优点是代码简洁,适合短小的逻辑。 但缺点是对于复杂逻辑可能会降低代码可读性。 因此,建议仅在简单场景中使用匿名函数。
希望这个简单的例子能帮助你理解Python的lambda!
代码示例
people = [
{"name": "Alice",
"age": 25,
"city": "Beijing"},
{"name": "Bob",
"age": 30,
"city": "Shanghai"},
{"name": "Cathy",
"age": 20,
"city": "Beijing"},
{"name": "David",
"age": 35,
"city": "Guangzhou"}
]
# Sort by age
sorted_by_age = sorted(
people,
key=lambda x: x["age"]
)
# Filter adults
filtered_adults = list(
filter(
lambda x: x["age"] > 25,
people
)
)
# Filter by age and city
filtered_by_age_and_city = list(
filter(
lambda x: x["age"] > 25
and x["city"] == "Beijing",
people
)
)
# Advanced: Lambda in a
# higher-order function,
# simplified
doubled_ages = list(
map(
lambda x: {
**x,
"age": x["age"] * 2
},
people
)
)
# Function to print list
# with title
def print_list(title, items):
print(title)
for p in items:
print(f"{p['name']}: "
f"{p['age']} years old, "
f"{p['city']}")
# Print all results at the
# end
print_list(
"Sorted by age:",
sorted_by_age
)
print_list(
"\nAdults list:",
filtered_adults
)
print_list(
"\nAdults from Beijing:",
filtered_by_age_and_city
)
print_list(
"\nDoubled ages:",
doubled_ages
)