Python学习笔记(八):

  1. 复习回顾
  2. 递归函数
  3. 内置函数

1. 复习回顾

1. 深浅拷贝

2. 集合

应用:
1. 去重
2. 关系操作:交集,并集,差集,对称差集
操作:
3. 定义
s1 = set('alvin')
4. 添加
s.add()
s.update()
5. 删除
s.remove()
关系操作:
6. in , not in
7. == , !=
8. 超级,子集
9. 交集
10. 并集
11. 差集
12. 对称差集

3. 函数

  1. 特性:代码重用、保持一致性、可扩展性
  2. 函数的定义
  3. 函数的参数:必备参数、关键字参数、默认参数、不定长参数
  4. 函数的返回值
  5. 作用域:LEGB

4. 补充:高阶函数

高阶函数是至少满足下列一个条件的函数:
1. 接受一个或多个函数作为输入
2. 输出一个函数

代码示例:

def f(n):
    return n*n

print(f(4))         # 结果:16

def foo(a,b,func):
    return func(a) + func(b)
# 函数名可以进行赋值
# 函数名可以作为参数
print(foo(1,2,f))   # 结果:5

2. 递归函数

递归的特性:
1. 自己调用自己
2. 有一个结束条件
3. 递归的效率比较低
4. 递归可以实现的循环一定可以解决

代码示例:

# 阶乘
def fact(n):
    if n == 1:
        return 1
    else:
        return n*fact(n-1)

print(fact(5))

# 菲波那切数列-后面一个数字等于前面两个数相加
def fei(n):
    if n == 1:
        return 0
    if n == 2:
        return 1
    else:
        return fei(n-1)+fei(n-2)

print(fei(5))

3. 内置函数

<span class='yzk_title_175'>Python学习笔记(八)</span>-一只小白

几个比较重要的内置函数:
1. filter(function, sequence)

代码示例:

str = ['a', 'b','c', 'd']

def fun1(s):
    if s != 'a':
        return s

ret = filter(fun1, str)
print(list(ret))# ret是一个迭代器对象    
  • 对sequence中的item依次执行function(item),将执行结果为True的item做成一个filter object的迭代器返回。可以看作是过滤函数
  1. map(function, sequence)

代码示例:

str = [1, 2,'a', 'b']

def fun2(s):
    return s + "alvin"

ret = map(fun2, str)
print(ret)      #  map object的迭代器
print(list(ret))#  ['aalvin', 'balvin', 'calvin', 'dalvin']
  • 对sequence中的item依次执行function(item),将执行结果组成一个map object迭代器返回.
    map也支持多个sequence,这就要求function也支持相应数量的参数输入:
ef add(x,y):
    return x+y
print (list(map(add, range(10), range(10))))##[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
  1. reduce(function, sequence, starting_value)

代码示例:

from functools import reduce

def add1(x,y):
    return x + y

print (reduce(add1, range(1, 101)))## 4950 (注:1+2+...+99)
print (reduce(add1, range(1, 101), 20))## 4970 (注:1+2+...+99+20)
  • 对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用
  1. lambda
#普通函数
def add(a,b):
    return a + b

print add(2,3)

#匿名函数
add = lambda a,b : a + b
print add(2,3)

#========输出===========
5
5
  • 匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b)。
  • 因为lamdba在创建时不需要命名,所以,叫匿名函数