内置函数拓展,递归函数

1. lambda匿名函数

lambda 就是为了解决一些简单的需求而设定的一句话函数

举例:

计算一个数的平方:

用函数写:def func(n):

     return n*n

用匿名函数写:f = lanbda n: n*n

语法:函数名 = lambda 参数: 函数体

注意:
1. 函数的参数可以有多个. 多个参数之间用逗号隔开
2. 匿名函数不管多复杂. 只能写一行, 且逻辑结束后直接返回数据
3. 返回值和正常的函数一样, 可以是任意数据类型

     

2. sorted()

排序函数.
语法: sorted(Iterable, key=None, reverse=False)

lterable 可以迭代的对象

key 排序规则,可以用函数写,也可以用匿名函数写.根据自己具体需要排序的要求

reverse 是否需要倒序,如果写True,默认是False

举例:lst = [1,5,6,9,2,3,8]

  lst2= sorted(lst)  #打印结果是 1,2,3,5,6,8,9

3. filter()

语法: filter(function. Iterable)

function: 用来筛选的函数. 在filter中会自动动的把iterable中的元素传递给function. 然后
根据function返回的True或者False来判断是否保留此项数据

lterable:可迭代对象

lst = [1,2,3,4,5,6,7]
ll = filter(lambda x: x%2==0, lst) # 筛选所有的偶数
print(ll) #直接打印是内存地址
print(list(ll)) #[2,4,6]


4. map()

映射函数
语法: map(function, iterable) 可以对可迭代对象中的每一个元素进行映射. 分别取执值function
举例:

def func(e):
  return e*e
mp = map(func, [1, 2, 3, 4, 5])
print(mp) #执行也是一串内存地址
print(list(mp)) #装进列表后每一个元素的平方


5. 递归函数

递归函数的本意就是函数就是函数里面调用本身

注意要有文件的入口以及出口,如果一直调用的话,会进行死循环,并且到达pycharm深度后会报错.

举例:

import os
def read(filepath, n):
  files = os.listdir(filepath)                    # 获取到当前文件夹中的所有文件
  for fi in files:                                       # 遍历文件夹中的文件, 这里获取的只是本层⽂文件名
    fi_d = os.path.join(filepath,fi)      # 加入文件夹 获取到文件夹+文件

      if os.path.isdir(fi_d):            # 如果该路径下的文件是文件夹
        print("\t"*n, fi)
        return read(fi_d, n+1)            # 继续进行相同的操作
      else:
        print("\t"*n, fi)              # 递归出口. 最终在这里隐含着return

read('../oldboy/', 0)       #递归遍历文件下的所有文件名

猜你喜欢

转载自www.cnblogs.com/lowen107/p/9910847.html