上节总结

 一、上节内容补充回顾
1、lambda
func = lambda x,y: 9+x
参数: x,y
函数体:9+x ==》 return 9+x
func: 函数名 def func(x,y):
return x + 9
def func(x,y):
return x + 9 func = lambda x,y: 9+x 扩展:函数名可以当做参数传递
函数名() ==》 执行函数
函数名 ==》 代指函数 2、内置
xxx
3、open文件操作
open()
1、文件路径
2、模式
基本操作:
r,只读
w,只写(先清空)
x,不存在,创建,存在,报错: 只写
a,追加,只写,不可读
二进制
rb
wb
xb
ab
+
r+,读写:
读,0开始读取
写,先读了,往最后追加。
先读,最后追加
主动seek,写从当前指针向后写
==》 w+,读写
x+,读写
a+,读写
读,最后位置读取
写,
最后追加
主动seek,还是最后追加 r+ 最常用
3、文件操作 truncate,截取前面
read
read(1) :无b,字符,取决于打开的方式
read(1) :有b,字节,
write
str :无b,字符串
bytes :有b,字节 readline
只读取一行 readlines:
[“第一行”, "第二行"] xrealines: 2.7
for line in f.xrealines():
line f = open()
for i in f:
print(i) flush
强行刷入硬盘 close tell() 获取指针位置
seek() 跳转到某个位置 4、 whth open(xx) as f:
print 5、with open(xx) as f1 ,open(xx) as f2: 查看总结内容

函数作为参数传入另一个函数

 # 2 函数参数
def f1():
return "F1"
def f2(arg):
arg()
return 'F2' # 变量 x =123
# 函数名 f1 = 对应def f1 内存地址
# 函数名 f2 = 对应def f2 内存地址
# print(f1) # 执行f2函数,f1当传参
f2(f1)

f1,代指这个函数名,没有执行。这时f1就是一个变量,可以当作参数传入另外一个函数

f1(),去执行这个函数。

filter 方法的实现

 def myfilter(func, args):
#func,函数名,func=func_t
result = []
for i in args:
if func(i):#执行接收的函数,并获取返回值
result.append(i)
return result def func_t(x):
if x > 22:
return True
else:
return False r = myfilter(func_t, [11, 22, 33, 44, 55])
print(r) C:\Python35\python3.exe E:/py/55/learn-python/oldboy/5/myFilter.py
[33, 44, 55]

map方法实现

 def mymap(func, args):
# func=>f1函数
# args=>[11,22,33,44,55]
result = []
for i in args:
result.append(func(i)) # func(11)=》f1(11)
return result def f1(x):
return x + 100 r = mymap(f1, [11, 22, 33, 44, 55])
print(r) C:\Python35\python3.exe E:/py/55/learn-python/oldboy/5/my_map.py
[111, 122, 133, 144, 155]

1、冒泡排序

 #互换两个参数值
a1 = 123
a2 = 456 #引入temp中间值
# # temp = a1
# # a1 = a2
# # a2 = temp
# # print(a1, a2) #不引入temp
a1 = a1 + a2 #先将两个数的和赋值给其中一个
a2 = a1 - a2 #用和减去自己,就是新的值,a1
a1 = a1 - a2 #在用和减去新的另外一个数,就变换了。a2
print(a1, a2)

需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序

思路:相邻两个值进行比较,将较大的值放在右侧,依次比较!

 li = [13, 22, 6, 99, 11]

 for m in range(4):     # 等价于 #for m in range(len(li)-1):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp 第一步
 li = [13, 22, 6, 99, 11]

 for m in range(4):     # 等价于 #for m in range(len(li)-1):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp for m in range(3): # 等价于 #for m in range(len(li)-2):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp for m in range(2): # 等价于 #for m in range(len(li)-3):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp for m in range(1): # 等价于 #for m in range(len(li)-4):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp
print li 第二步
 li = [13, 22, 6, 99, 11]

 for i in range(1,5):
for m in range(len(li)-i):
if li[m] > li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp 第三步
 #冒泡排序练习
li = [1, 22, 11, 55, 23, 33, 12, 56, 4, 7]
le = len(li)
while le > 0:
for i in range(le - 1):
if li[i] > li[i + 1]:
li[i] = li[i] + li[i + 1]
li[i + 1] = li[i] - li[i + 1]
li[i] = li[i] - li[i + 1]
le -= 1
print(li)

2、递归

利用函数编写如下数列:

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

 def func(arg1,arg2):
if arg1 == 0:
print arg1, arg2
arg3 = arg1 + arg2
print arg3
func(arg2, arg3) func(0,1)

递归中的return返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

以上要点中,比较重要有参数和返回值:

 如下  n5 返回值 返回给其调用者  再返回给上一层调用者。  如果 n4 n3 n2 n1 其中一个不加return 则返回none
def n5():
return 5
def n4():
return n5()
def n3():
return n4()
def n2():
return n3()
def n1():
return n2() ret1 = n1()
print(ret1)

总结: return 函数()

  先调用函数,然后在return将获取的返回这返回给调用这个函数的变量

函数返回值

递归返回值图理解、

同上图类似,只不过函数名为同一个了

练习  利用递归 打印 斐波那契数列第10个数

 def func(d, a1, a2):
print(a1,a2)
if d == 10:
return a1
a3 = a1 + a2
return func(d+1, a2, a3) ret = func(1, 0, 1)
print(ret)

python基础-5 冒泡排序、递归的更多相关文章

  1. Python基础(函数-递归)

    本章内容: 深浅拷贝 函数(全局与局部变量) 内置函数 文件处理 三元运算 lambda 表达式 递归(斐波那契数列) 冒泡排序 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝 ...

  2. python基础4之递归、lambda、深浅copy

    内容概要: 一.递归 二.匿名函数 三.关于python中的深浅拷贝与赋值 一.递归 递归就是函数本身调用自己,直到满足指定条件之后一层层退出函数 递归特性: 必须有一个明确的结束条件 每次进入更深一 ...

  3. python 基础篇 16 递归和二分数查找与编码补充回顾

    编码回顾补充: 回顾编码问题:        编码相当于密码本,关系到二进制与看懂的文字的的对应关系.    最早期的密码本:        ascii码:只包含英文字母,数字,特殊字符.       ...

  4. Python基础之初识递归

    初识递归 递归的定义: 在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归. 递归的最大深度--997 递归函数不受外力的阻止会一直执行下去,python为了杜绝此类现象,强制将递归层 ...

  5. Python开发【第一篇】Python基础之函数递归

    函数递归 递归的本质: 就是一个函数调用另外一个函数. def d(): return '123' def c(): r = d() return r def b(): r = c() return ...

  6. python基础——异常处理、递归

    异常处理 while True: try: num1 = int(input('num1:')) num2 = int(input('num2:')) result = num1 + num2 exc ...

  7. Day3 - Python基础3 函数、递归、内置函数

    Python之路,Day3 - Python基础3   本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...

  8. Python基础(协程函数、内置函数、递归、模块和包)-day05

    写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04  ...

  9. 十四. Python基础(14)--递归

    十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...

随机推荐

  1. PAT Basic 1010 一元多项式求导 (25 分)(活用stringstream,昨天学习的)

    设计函数求一元多项式的导数.(注:x​n​​(n为整数)的一阶导数为nx​n−1​​.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. ...

  2. 【04】Python 深拷贝浅拷贝 函数 递归 集合

    1 深拷贝浅拷贝 1.1 a==b与a is b的区别 a == b    比较两个对象的内容是否相等(可以是不同内存空间) a is b  比较a与b是否指向同一个内存地址,也就是a与b的id是否相 ...

  3. Extjs中如何在一行textfield后面增加文字提示

    添加监听事件: listeners: {               render: function(obj) {                     var font=document.cre ...

  4. mongodb replica set搭建

    1/安装mongodb 配置repo: [mongodb-org-3.4]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/red ...

  5. iView栅格的使用

    一般情况下栅格系统都会把每行row分为12列,但是iview是采用了24栅格系统,将区域进行24等分 基础用法 实例代码: <template> <Row> <Col s ...

  6. 层定位layer

    一.如何实现层定位position属性 二.相对定位relative 三.绝对定位absolute 四.元素堆叠z-index 一.实现层定位的方法 position属性实现层定位,把元素分出层次形成 ...

  7. php shuffle()函数 语法

    php shuffle()函数 语法 作用:把数组中的元素按随机顺序重新排序:富瑞华 语法:shuffle(array) 参数: 参数 描述 array 必需.规定要使用的数组. 说明:若成功则返回 ...

  8. Linux内核设计与实现 总结笔记(第十四章)块I/O层

    一.剖析一个块设备 块设备最小的可寻址单元是扇区. 扇区大小一般是2的整数倍,最常见的是512字节. 因为各种软件的用途不同,所以他们都会用到自己的最小逻辑可寻址单元----块.块只能基于文件系统,是 ...

  9. SQL Server性能调优--优化建议(一)

    序言 当数据量小的时候,SQL优化或许无关紧要,但是当数据量达到一定量级之后,性能优化将变得至关重要,甚至决定系统成败. 定位慢查询 查询编译以来cpu耗时总量最多的前50条 --查询编译以来 cpu ...

  10. HDU 3613 Best Reward ( 拓展KMP求回文串 || Manacher )

    题意 : 给个字符串S,要把S分成两段T1,T2,每个字母都有一个对应的价值,如果T1,T2是回文串,那么他们就会有一个价值,这个价值是这个串的所有字母价值之和,如果不是回文串,那么这串价值就为0.问 ...