一 . 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)]