文章目录
1.内置文件中常用方法
1.range()
- range(start,stop,step) --> range object
- start:起始值默认为零
- stop:结束值
- step:步长
print(list(i for i in range(0,10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 生成0到10的整数
2.zip()
zip()用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
- zip(iter[,iter2 […]]) --> zip object
a = ('name', 'age')
b = ('Jeff', 18)
print(tuple(zip(a, b)))
# (('name', 'Jeff'), ('age', 18))
3.map()
map() 会根据提供的函数对指定序列做映射。
- map(func,*iterables) --> map object
num = ['1', '2', '3']
nums = map(lambda x:int(x),num)
print(list(nums)) # [1, 2, 3]
4.filter()
filter() 用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
- filter(func, iterable) --> filter object
- func:自定义函数
- iterable:可迭代对象
def jishu(a):
return a % 2 == 1
print(list(filter(jishu, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])))
# [1, 3, 5, 7, 9];把奇数过滤出来
练习
- 实现:返回1-10的奇数列表
def jishu(a):
return a % 2 == 1
print(list(filter(jishu, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])))
# [1, 3, 5, 7, 9];把奇数过滤出来
- 实现:阶乘,比如n!=123*…*n
def chengjie(n):
rse = n
for i in range(1, n):
rse *= i
print(rse)
chengjie(6) # 720
2.匿名函数
1.匿名函数介绍
当我们在传入函数时,有些时候,不需要重复调用该函数,直接传入匿名函数更方便,也无需担心函数名冲突,并且还可以将匿名函数赋值给一个变量,再利用变量来调用该函数。
- lambda x:x*x
- 关键字lambda表示匿名函数
- 冒号前面的x表示函数参数
- 冒号后面的表示函数返回值
a = lambda x, y : x*y
print(a(2, 3)) # 6
2.匿名函数应用
- 匿名函数作返回值
def fx(i, j):
return lambda: i * j
f = fx(6, 6)
- 匿名函数作实参
def text(a, b, func):
res = func(a, b)
return res
nums = text(11, 22, lambda x, y: x + y)
3.练习
- 将 lis = [4,-2,3,1] --> [1,-2,3,4]
lis = [4, -2, 3, 1]
# key:指定排序规则,排序完成返回原元素
# abs取绝对值
lis.sort(key=abs)
print(lis)
- infors = [{‘name’:‘qian’,‘age’:28},{‘name’:‘amy’,‘age’:20},{‘name’:‘james’,‘age’:25}]以name对应的值进行排序
infors = [{
'name': 'qian', 'age': 28}, {
'name': 'amy', 'age': 20}, {
'name': 'james', 'age': 25}]
# key:排序键-->获取每个字典当中的name值
infors.sort(key=lambda x:x['name'])
print(infors)
3.高阶函数
高阶函数需满足条件:
- 函数名 作为 参数传入
- 函数名 作为 返回值
4.闭包
闭包的定义需要满足以下三个条件:
- 在一个外函数中定义了一个内函数
- 内函数里运用了外函数的临时变量
- 并且外函数的返回值是内函数的引用
# 运行顺序标在代码后面
def text(number): # 2
print('--1--') # 3
def text_in(number_in): # 6
print(number_in) # 7
print('--2--') # 8
return number_in + number # 9
print('--3--') # 4
return text_in # 5
res = text(20) # 1
res1 = res(25) # 6
print(res1)
'''
输出结果
--1--
--3--
25
--2--
45
'''
5.装饰器
装饰器 (@) 是一种语法糖,主要用于在函数或类的基础上添加一些可重用的额外功能。从应用开发的角度来看的话,我们使用装饰器来对我们的应用代码进行功能性扩展和包装,以提高代码的可重用性和可维护性。
- 日志记录
- 调用跟踪管理及参数验证
- 在 Web 应用中进行登录验证或路由注册
- 性能优化中记录任务执行时间