Python 学习笔记-8

Python 学习笔记-8:

  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. 输出一个函数

代码示例:

1
2
3
4
5
6
7
8
9
10
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. 递归可以实现的循环一定可以解决

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 阶乘
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. 内置函数

内置函数

几个比较重要的内置函数:

  1. filter(function, sequence)

代码示例:

1
2
3
4
5
6
7
8
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)

代码示例:

1
2
3
4
5
6
7
8
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也支持相应数量的参数输入:
    1
    2
    3
    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)  

代码示例:

1
2
3
4
5
6
7
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
1
2
3
4
5
6
7
8
9
10
11
12
13
#普通函数
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在创建时不需要命名,所以,叫匿名函数