1、冒泡排序

  关于冒泡排序实现大小比较,大索引会向后移动,这次循环将最大数值直接移动至最后。

  1. li = [,,,,]
  2. for i in range(len(li)-):
  3. if li[i] > li[i+]:
  4. temp = li[i]
  5. li[i] = li[i + ]
  6. li[i + ] = temp
  7. print(li)
  8. [, , , ]

冒泡排序以函数的方式完整的实现方法

  1.  
  1. def my_min(a):
    c = len(a)
    while c > 1:
    for i in range(len(a) - 1):
    if a[i] > a[i + 1]:
    temp = a[i]
    a[i] = a[i + 1]
    a[i + 1] = temp
    c -= 1
    print(a)
    b = [23,25,12,14,4,]
    my_min(b)
  1. [4, 12, 14, 23, 25]

2、递归

  斐波那契数列根据递归的方法实现方式,因为无线循环的递归会报错,这里我们做个限制

  1. def f1(a1,a2):
  2. if a1 >1000:
  3. return
  4. print(a1)
  5. a3 = a1 + a2
  6. f1(a2,a3)
  7. f1(0,1)
  8. 0
  9. 1
  10. 1
  11. 2
  12. 3
  13. 5
  14. 8
  15. 13
  16. 21
  17. 34
  18. 55
  19. 89
  20. 144
  21. 233
  22. 377
  23. 610
  24. 987

  以递归的方式获取菲波那切数列第十个数字的代码实现方式

  1. def f5(de,a1,a2):
  2. if de == 10:
  3. return a1
  4. a3 = a1 +a2
  5. r = f5(de + 1,a2,a3)
  6. return r
  7. print(f5(1,0,1))
  8. 34

3、装饰器,用于装饰某个方法、函数,对象或者类

  下边我们给一个简单的函数加一个简单的装饰器

  1. def out(func):
  2. def inner():
  3. print("hello")
  4. r = func()
  5. return r
  6. return inner
  7. @out
  8. def f1():
  9. print("f1")
  10. f1()
  11.  
  12. hello
  13. f1

  @符号在这里有特殊的含义,@函数名,会执行该函数,并且会将这行下边的函数名当做参数传入该函数,并将out的返回值重新赋值给f1

  双参数的装饰器写法

  1. def out(func):
  2. def inner(a,b):
  3. print("hello")
  4. r = func(a,b)
  5. return r
  6. return inner
  7. @out
  8. def f1(a,b):
  9. print("f1")
  10. print(a + b)
  11. f1(1,2)
  12.  
  13. hello
  14. f1
  15. 3

  函数含有多个参数的装饰器的写法

  1. def out(func):
  2. def inner(*arg,**kwargs):
  3. print("hello")
  4. r = func(*arg,**kwargs)
  5. return r
  6. return inner
  7. @out
  8. def f1(a,b):
  9. print("f1")
  10. print(a + b)
  11. f1(1,2)
  12.  
  13. hello
  14. f1
  15. 3

  多个装饰器装饰一个函数的写法

  1. def out(func):
  2. def inner(*arg,**kwargs):
  3. print("hello")
  4. r = func(*arg,**kwargs)
  5. return r
  6. return inner
  7. def out1(func):
  8. def inner(*arg,**kwargs):
  9. print("heh")
  10. r = func(*arg,**kwargs)
  11. return r
  12. return inner
  13. @out
  14. @out1
  15. def f1(a,b):
  16. print("f1")
  17. print(a + b)
  18. f1(1,2)
  19.  
  20. hello
  21. heh
  22. f1
  23. 3

python基础之基本算法和装饰器的更多相关文章

  1. Python菜鸟之路:Python基础-逼格提升利器:装饰器Decorator

    一.装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等. 装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身 ...

  2. Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json & pickle 数据序列化

    一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...

  3. python 基础篇 11 函数进阶----装饰器

    11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...

  4. python基础之闭包函数和装饰器

    补充:全局变量声明及局部变量引用 python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 global关键字用来在函数或其 ...

  5. Python基础2:反射、装饰器、JSON,接口

    一.反射 最近接触到python的反射机制,遂记录下来已巩固.但是,笔者也是粗略的使用了__import__, getattr()函数而已.目前,笔者的理解是,反射可以使用户通过自定义输入来导入响应的 ...

  6. Python基础(7)闭包函数、装饰器

    一.闭包函数 闭包函数:1.函数内部定义函数,成为内部函数, 2.改内部函数包含对外部作用域,而不是对全局作用域名字的引用 那么该内部函数成为闭包函数 #最简单的无参闭包函数 def func1() ...

  7. python基础编程: 函数示例、装饰器、模块、内置函数

    目录: 函数示例 装饰器 模块 内置函数 一.函数示例: 1.为什么使用函数之模块化程序设计: 不使用模块程序设计的缺点: 1.体系结构不清晰,可主读性差: 2.可扩展性差: 3.程序冗长: 2.定义 ...

  8. Python基础(闭包函数、装饰器、模块和包)

    闭包函数 格式: def 函数名1(): def 函数名2(): 变量 = 值 return 变量 return 函数名2 func = 函数名1() key = func()

  9. python基础补漏-05-生成器和装饰器

    [1]生成器 很难用简单的语言描述生成器. 生成器:从字面上来理解,就是以某种规则为基础,不断的生成数据的工具 生成器函数: 在函数中如果出现了yield关键字,那么该函数就不再是普通函数,而是生成器 ...

随机推荐

  1. 当您尝试从 64 位 SQL Server 客户端上运行分布式的查询到链接的 32 位 SQL Server 时,您可能会收到一条错误消息

    如何处理64位SQL访问32位SQL执行脚本语句问题 链接服务器"SERVER_YBJK"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 &qu ...

  2. Xenia and Bit Operations(线段树单点更新)

    Xenia and Bit Operations time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  3. Could not find acceptable representation

    引起的原因:    由于设置了@ResponseBody,要把对象转换成json格式,缺少转换依赖的jar包,故此错. 解决办法: <dependency> <groupId> ...

  4. hbase 使用

    hbase shell命令的使用 再使用hbase 命令之前先检查一下hbase是否运行正常 hadoop@Master:/usr/hbase/bin$ jps HMaster NameNode Se ...

  5. Access导出csv 内容添加双引号 vba

    要求:导出的csv文件,用文本工具打开时,文字内容需要有双引号,如下:"1","name1","name2","" 我之 ...

  6. Unity3D 敌人AI 和 动画( Animator )系统的实例讲解

    在这个实例中,我们要做一些敌人AI的简单实现,其中自动跟随和动画是重点,我们要达到的目标如下: 1.敌人能够自动跟随主角 2.敌人模型一共有四个动作:Idle(空闲) Run(奔跑) Attack(攻 ...

  7. 值得拥有!精心推荐几款超实用的 CSS 开发工具

    当你开发一个网站或 Web 应用程序的时候,有合适的工具,绝对可以帮助您节省大量的时间.在这篇文章中,我为大家收集了超有用的 CSS 开发工具. 对于 Web 开发人员来说,找到有用的 CSS 开发工 ...

  8. 一个android应用开发的感悟

    对于客户端的开发,以我个人现在的水准,很难进行一个系统的讲解,只能分享下遇到的几个问题点好了! 1:对于tabhost的使用,这个东西真的是过时了:第一个版本,我是用的tabhost确实是很难用,不过 ...

  9. 转载:第四弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!

    感谢大家支持!博卡君周末休息了两天,今天又回到战斗状态了.上周五晚上微信放出官方工具和教程了,推荐程序猿小伙伴们都去试一试,结合教程和代码,写写自己的 demo 也不错. 闲话不多说,开始更新! 第七 ...

  10. mysql DDL时出现的锁等待状态

    如下表格所示: session1: session2: 10:30:27 root@localhost:[testdb] mysql.sock>select * from t2;+------+ ...