常用的函数(eval,map,filter,zip,lambda,sorted)及其使用方法

一 . eval ()函数

使用eval函数可以对动态表达式进行求值

基本格式:
eval(expression[, globals[, locals]]) 1

案例:
x=2
d=input('请输入表达式:')
print(eval(d))

输出:
请输入表达式:x*x+2*x+1
9

总结: 对你所输入的表达式进行求值的运算,eval()函数的功能是将字符串生成语句执行,如果字符串中包含不安全的语句(例如删除文件的语句),则存在注入安全隐患。

二 map() 函数

在Python 3中,==map()==函数实现为内置的map(f,iterable,…)可迭代对象(类似列表),将函数f应用于可迭代对象,返回结果为可迭代对象。

案例一:

map()函数示例1:自定义函数is_odd,应用该函数到可迭代对象的每一个元素,返回是否为奇数的可迭代对象结果。


def is_odd(x):
return x % 2 == 1
list(map(is_odd, range(5)))

结果:
[False, True, False, True, False]

案例二:

map()函数示例2:使用内置函数abs返回绝对值列表。


list(map(abs, [1, -3, 5, 6, -2, 4]))
[1, 3, 5, 6, 2, 4]

案例三:

map()函数示例3:使用内置函数str返回元素的字符串表示形式。


list(map(str, [1,2,3,4,5]))
['1', '2', '3', '4', '5']

三 filter() 函数

在Python 3中,==filter()==函数实现为内置的filter(f,iterable)可迭代对象,将函数f应用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素,返回结果为可迭代对象。

案例一:

filter()函数示例1:返回奇数的可迭代对象。


def is_odd(x):
return x % 2 == 1
list(filter(is_odd, range(10)))
结果:
[1, 3, 5, 7, 9]

案例二:

filter()函数示例2:返回三位数的回文数(正序和反序相同)可迭代对象.


def is_palindrome(x):
s_str = str(x)
if s_str == s_str[::-1]:
return x
list(filter(is_palindrome, range(100, 1000)))

结果:
[101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242,
252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393,
404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, 525, 535, 545,
555, 565, 575, 585, 595, 606, 616, 626, 636, 646, 656, 666, 676, 686, 696,
707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 808, 818, 828, 838, 848,
858, 868, 878, 888, 898, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999]

四 zip() 函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

注意:如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同


a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
result = zip(a, b) # 打包为元组的列表
# 结果:[(1, 4), (2, 5), (3, 6)]
result = zip(a, c) # 元素个数与最短的列表一致
# 结果:[(1, 4), (2, 5), (3, 6)]

五 Lambda表达式和匿名函数

在上述例子中,作为参数传递的函数可以为内置函数,也可以为自定义函数。如果函数的形式比较简单且只需要作为参数传递给其他函数,则可使用Lambda表达式直接定义匿名函数。匿名函数广泛用于需要函数对象作为参数、函数比较简单并且只使用一次的场合。例如,filter(f,a)的第一个参数为函数对象,根据函数筛选列表的内容。

Lambda是一种简便的、在同一行中定义函数的方法。Lambda实际上生成一个函数对象,即匿名函数。

Lambda表达式的基本格式如下。


lambda arg1, arg2 ... : <expression>

其中,arg1、arg2 等为函数的参数,<expression>为函数的语句,其结果为函数的返回值。例如,
语句 lambda x,y:x+y 生成一个函数对象,函数参数为 x, y ,返回值为 x+y。

案例一:

基本的用法如下


f = lambda x, y: x + y
type(f)  # 查看f的类型
<class 'function'>  #说明f的类型为函数
#调用函数f
f(12, 34)
结果:
46

案例二

匿名函数应用示例1:过滤列表,返回元素为奇数的可迭代对象。


list(filter(lambda x: x % 2 == 1, range(10)))
结果:
[1, 3, 5, 7, 9]

案例三

匿名函数应用示例2:过滤列表,返回元素非空的可迭代对象。


list(filter(lambda s: s and s.strip(), ['A', '', 'B', None, 'C', '']))
结果:
['A', 'B', 'C']

案例四

匿名函数应用示例3:过滤列表,返回元素大于零的可迭代对象。


list(filter(lambda x: x > 0, [1, 0, -2, 8, 5]))
结果:
[1, 8, 5]

六 sorted()函数

内置函数sorted()把一个可迭代对象进行排序,返回结果列表。其语法形式如下。

基本用法
sorted(iterable, *, key=None, reverse=False)
解释:
其中,iterable是待排序的可迭代对象;key是比较函数(默认为None,按自然顺序排序);reverse用
于指定是否逆序排序。

案例:


sorted([1, 5, 6, 9, 7, 4])
[1, 4, 5, 6, 7, 9]


sorted(['Dog', 'Cat', 'Rabbit'], key=len) # 按字符长度排序
['Dog', 'Cat', 'Rabbit']


sorted(['Dog', 'Cat', 'Rabbit'], key=str.lower) # 字符串不区分大小写排序
['Cat', 'Dog', 'Rabbit']


sorted([('Bob', 75), ('Adam', 92), ('Lisa', 88)]) # 默认第 0 个元素排序
[('Adam', 92), ('Bob', 75), ('Lisa', 88)]


#指定第 1 个元素排序
sorted([('Bob', 75), ('Adam', 92), ('Lisa', 88)], key=lambda x:x[1]) 
[('Bob', 75), ('Lisa', 88), ('Adam', 92)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想做程序猿的员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值