Python匿名函数

匿名函数

匿名函数,又称为Lambda函数,是一种没有名字的函数。它们在编程中非常有用,特别是用于创建简洁的代码和实现函数式编程的概念。

下面是一个Python中使用匿名函数的例子:

python# 这是一个匿名函数,它接受两个参数,并返回它们的和
add = lambda x, y: x + y

# 使用此函数
result = add(3, 5)
print(result) # 输出 8

在这个例子中,lambda x, y: x + y 是一个匿名函数,它接受两个参数,x 和 y,并返回它们的和。这种函数在需要短小函数的地方非常有用,例如在排序或过滤列表时。

请注意,尽管匿名函数非常有用,但它们也可能使代码更难阅读和理解。因此,在写更复杂的函数或算法时,使用标准函数定义可能更为合适。

语法: 函数名 = lambda

参数: 返回值 注意: 1. 函数的参数可以有多个. 多个参数之间⽤逗号隔开 2. 匿名函数不管多复杂. 只能写⼀⾏, 且逻辑结束后直接返回数据 3. 返回值和正常的函数⼀样, 可以是任意数据类型 匿名函数并不是说⼀定没有名字. 这⾥前⾯的变量就是⼀个函数名. 说他是匿名原因是我们通 过__name__查看的时候是没有名字的. 统⼀都叫lambda. 在调⽤的时候没有什么特别之处. 像正常的函数调⽤即可

 求 几个数的大小

res = lambda *args: max(args)
print(res(1, 3, 5, 55, 6, 6, 56, 6, 6, 6, 6))

sorted() 排序函数

语法: sorted(Iterable, key=None, reverse=False)

Iterable: 可迭代对象 key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每⼀个元素传递给这个函 数的参数. 根据函数运算的结果进⾏排序 reverse: 是否是倒叙. True: 倒叙, False: 正叙 

和函数组合使⽤

 

lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]

# 计算字符串⻓度
def func(s):
    return len(s)

print(sorted(lst, key=func)) #['狐仙', '麻花藤', '冈本次郎', '中央情报局']

和lambda组合使⽤

lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]
res=sorted(lst, key=lambda s:len(s))
print(res) #['狐仙', '麻花藤', '冈本次郎', '中央情报局']

lambda和字典使用

lst = [{"id": 1, "name": 'alex', "age": 18},
       {"id": 2, "name": 'wusir', "age": 16},
       {"id": 3, "name": 'taibai', "age": 17}]
# 按照年龄对学⽣信息进⾏排序
print(sorted(lst, key=lambda e: e['age']))
#[{'id': 2, 'name': 'wusir', 'age': 16}, 
# {'id': 3, 'name': 'taibai', 'age': 17},
# {'id': 1, 'name': 'alex', 'age': 18}]

filter() 筛选函数

在Python中,filter()是一个内置函数,用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

filter()函数的语法是:

 
pythonfilter(function, iterable)

参数解释:

  • function: 用于测试每个元素是否符合条件的函数。这个函数应该返回一个布尔值:TrueFalse。对于序列中的每个元素,function都会被调用一次。
  • iterable: 可迭代对象,如列表、元组、集合等。

下面是一个简单的示例,使用filter()函数过滤出小于10的元素:

 
pythonnumbers = [5, 12, 8, 100, 35, 7]

# 定义一个函数,判断一个数是否小于10
def is_less_than_10(num):
return num < 10

# 使用 filter 函数过滤出小于10的元素
result = filter(is_less_than_10, numbers)

# 输出结果
print(list(result)) # 输出:[5, 8]

在这个例子中,is_less_than_10()函数用于检查每个数字是否小于10。filter()函数接受这个函数和一个可迭代的数字列表作为输入,然后返回一个对象,该对象生成器包含所有满足条件的元素(即小于10的元素)。最后,我们使用list()函数将生成器对象转换为列表并打印出来。

 #数字大于10

lis = [1, 23, 6, 5, 6, 89, 23, 3]

ls=filter(lambda a:a>10,lis)
print(list(ls))

 学生年龄大于17的

lst = [{"id": 1, "name": 'alex', "age": 18},
       {"id": 2, "name": 'wusir', "age": 16},
       {"id": 3, "name": 'taibai', "age": 17}]

lis=filter(lambda u:u["age"]>17,lst)
print(list(lis))
#[{'id': 1, 'name': 'alex', 'age': 18}]

map() 映射函数

在Python中,map()是一个内置函数,它对可迭代对象中的每个元素应用一个指定的函数,并返回一个迭代器,包含所有函数调用的结果。

map()函数的基本语法如下:

 
pythonmap(function, iterable, ...)

参数解释:

  • function: 这是你要应用于可迭代对象的函数。它可以是一个内置函数,例如 len() 或 str(),也可以是用户自定义的函数。
  • iterable: 这是你要应用函数的可迭代对象,例如列表、元组、集合或字符串等。你可以在这里指定一个或多个可迭代对象。

列表元素的平方:

ll = [1, 2, 3, 4, 5, 6, 7]
res = map(lambda x: x ** 2, ll)  #
print(list(res))  # [1, 4, 9, 16, 25, 36, 49]

两个列表元素相加

lst1 = [1, 2, 3, 4, 5]
lst2 = [2, 4, 6, 8, 10]
print(list(map(lambda x, y: x+y, lst1, lst2)))

# [3, 6, 9, 12, 15]

 zip() 拉链

在Python中,zip()函数是一个内置函数,用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符向函数传递可迭代对象。

下面是一个基本的例子:

 
python# 定义两个列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

# 使用 zip 将这两个列表组合
zipped = zip(list1, list2)

# 输出 zipped,会得到一个元组的迭代器
print(zipped)
# 输出: <zip object at 0x7f13dd41e2b0>

# 将迭代器转化为列表
zipped_list = list(zipped)
print(zipped_list) # 输出: [(1, 'a'), (2, 'b'), (3, 'c')]

这里,zip()函数将list1list2中的元素一一配对,然后返回一个迭代器。我们通过将迭代器转化为列表,可以获得一个包含所有配对元素的元组的列表。

注意,如果输入的可迭代对象长度不一致,那么zip()函数将返回一个长度与最短的对象相同的迭代器。

例如:

 
python# 定义两个列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c', 'd']

# 使用 zip 将这两个列表组合
zipped = zip(list1, list2)

# 输出 zipped,会得到一个元组的迭代器
print(zipped)
# 输出: <zip object at 0x7f13dd41e2b0>

# 将迭代器转化为列表
zipped_list = list(zipped)
print(zipped_list) # 输出: [(1, 'a'), (2, 'b'), (3, 'c')]

在这个例子中,由于list1list2短,所以zip()返回的列表长度与list1的长度相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值