• python-函数


    1、函数介绍

     Python 函数介绍

    2、变量的作用域

    3、递归函数

    作业

    # 作业:
    #1、使用for循环打印99 乘法表
    #2、使用递归求菲薄纳奇数列,1,1,2,3,5,8.。。
    for i in range(1,10):
        for j in range(1,i+1):
            print(f"{j}*{i}={i*j}",end=' ')
        print()
    
    print()
    # 递归函数
    def func(n):
        if n == 1 or n == 2:
            return 1
        else:
            return func(n-1) + func(n-2)
    
    n=10
    li=[]
    for i in range(1,n+1):
        res = func(i)
        li.append(res)
    print('递归函数',li)
    
    # 直接递归实现
    n=10
    lis=[]
    for i in range(n):
        if i ==0 or i==1:
            lis.append(1)
        else:
            lis.append(lis[i-1]+li[i-2])
    print('直接递归',lis)

    递归函数求10!

    def fun(n):
        if n==1:
            return 1
    
        return n*fun(n-1)
    
    print(fun(10))

    匿名函数

    Python3 函数进阶&迭代器与生成器

    列表生成器

    li = [i*2 for i in range(10)]
    print(li)

    例题:求100以内3的倍数

    列表生成式
    
    li= []
    for i  in range(1,101):
        if i%3==0:
            li.append(i)
    print(li)
    
    print([i for i in range(1,101) if i%3==0])
    
    更简洁方法:
    print([i for i in range(3,100,3)])

    python的各种推导式(列表推导式、字典推导式、集合推导式)

    4、高阶函数

    reduce() 累计求和 例如 1+2+3....+100

    reduce(lambda x,y:x+y,[1,2,3,4])

    from functools import reduce
    print(reduce(lambda x,y:x+y,[1,2,3,4,5]))

    # 实现1!+2!+3!+4!
    print(reduce(lambda x,y:x*y,[1,2,3,4,5]))
    # 实现1!+2!+3!+4!
    print(reduce(lambda x,y:x*y,[1,2,3,4,5]))
    
    # 1-5每个数的阶层形成一个列表
    def fat(n):
        return reduce(lambda x,y:x*y,range(1,n+1))
    print(list(map(fat,range(1,6))))
    
    # 对1!..+5!求和
    sum=reduce(lambda x,y:x+y,list(map(fat,range(1,6))))
    print(sum)

    filter()筛选函数

    map()会根据提供的函数对指定序列做映射

    zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组 用list()转化为列表

    sorted() 函数

    sorted(iterable, key=None, reverse=False)  
    iterable
    -- 可迭代对象。
    key
    -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse
    -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

    返回值

    返回重新排序的列表。

    # sorted
    # 字典
    print(sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}))
    # 利用key进行倒序排序
    # 默认对键进行排序,返回排序列表
    # 对字典的值进行排序:
    sorted(dict,lambda x:dict[x]) example_list = [5, 0, 6, 1, 2, 7, 3, 4] result_list = sorted(example_list, key=lambda x: x) print(result_list) example_list = [5, 0, 6, 1, 2, 7, 3, 4] print(sorted(example_list, reverse=True)) [1, 2, 3, 4, 5] [0, 1, 2, 3, 4, 5, 6, 7] [7, 6, 5, 4, 3, 2, 1, 0]
    # 对列表元素按长度进行排序
    li3=['a','as','zxc','sd']
    print(sorted(li3,key=lambda x:len(x)))
    # ['a', 'as', 'sd', 'zxc']

    迭代器和生成器

    生成器都是Iterator对象,但list、dict、str虽然是Iterable(可迭代),却不是Iterator(迭代器)。
    
    把list、dict、str等Iterable变成Iterator可以使用iter()函数:
    
    可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

    凡是可作用于for循环的对象都是Iterable类型;
    # 通过iter()创建迭代器
    li = [1,2,3,4]
    it = iter(li)
    print(it)
    print(next(it))
    for i in iter(it):
        print(i,type(i))
    
    <list_iterator object at 0x0000000001D966A0>
    1
    2 <class 'int'>
    3 <class 'int'>
    4 <class 'int'>

    生成器

     

  • 相关阅读:
    VNC远程控制软件是什么?有没有更好的远程桌面控制解决方案?
    目前国内最热门的四款远程桌面控制软件
    深入Redis命令的执行过程
    深入Redis客户端(redis客户端属性、redis缓冲区、关闭redis客户端)
    Springboot拦截器的使用
    Springboot使用Undertow
    Jenkins parallel并行构建
    Jenkins使用docker构建
    Redis 的键命令、HyperLogLog 命令、脚本命令、连接命令、服务器命令
    Redis Set和ZSet常用命令
  • 原文地址:https://www.cnblogs.com/foremostxl/p/11762002.html
Copyright © 2020-2023  润新知