• python基础之基本算法和装饰器


    1、冒泡排序

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

    li = [125,56,78,23,]
    for i in range(len(li)-1):
        if li[i] > li[i+1]:
            temp = li[i]
            li[i] = li[i + 1]
            li[i + 1] = temp
    print(li)
    [56, 78, 23, 125]

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

    
    
    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)
    [4, 12, 14, 23, 25]

    2、递归

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

    def f1(a1,a2):
        if a1 >1000:
            return
        print(a1)
        a3 = a1 + a2
        f1(a2,a3)
    f1(0,1)
    0
    1
    1
    2
    3
    5
    8
    13
    21
    34
    55
    89
    144
    233
    377
    610
    987

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

    def f5(de,a1,a2):
        if de == 10:
            return a1
        a3 = a1 +a2
        r = f5(de + 1,a2,a3)
        return r
    print(f5(1,0,1))
    34

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

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

    def out(func):
        def inner():
            print("hello")
            r = func()
            return r
        return inner
    @out
    def f1():
        print("f1")
    f1()
    
    
    hello
    f1

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

      双参数的装饰器写法

    def out(func):
        def inner(a,b):
            print("hello")
            r = func(a,b)
            return r
        return inner
    @out
    def f1(a,b):
        print("f1")
        print(a + b)
    f1(1,2)
    
    
    hello
    f1
    3

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

    def out(func):
        def inner(*arg,**kwargs):
            print("hello")
            r = func(*arg,**kwargs)
            return r
        return inner
    @out
    def f1(a,b):
        print("f1")
        print(a + b)
    f1(1,2)
    
    hello
    f1
    3

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

    def out(func):
        def inner(*arg,**kwargs):
            print("hello")
            r = func(*arg,**kwargs)
            return r
        return inner
    def out1(func):
        def inner(*arg,**kwargs):
            print("heh")
            r = func(*arg,**kwargs)
            return r
        return inner
    @out
    @out1
    def f1(a,b):
        print("f1")
        print(a + b)
    f1(1,2)
    
    hello
    heh
    f1
    3
  • 相关阅读:
    1245. Tree Diameter
    771. Jewels and Stones
    830. Positions of Large Groups
    648. Replace Words
    647. Palindromic Substrings
    435. Non-overlapping Intervals
    646. Maximum Length of Pair Chain
    645. Set Mismatch
    242. Valid Anagram
    438. Find All Anagrams in a String
  • 原文地址:https://www.cnblogs.com/kading/p/5571239.html
Copyright © 2020-2023  润新知