python note 14 其他函数及递归应用

1、repr用法

print("你好") # 用户看着舒服
print(repr("你好")) # 真实的字符串表示形式(正式的)print("我叫%r" % "周润发") # %r 实际上调用的是repr()print(repr("你好, 我\‘叫周润发")) # 程序中内部存储的内容, 这个是给程序员看的

2、lambda匿名函数用法

# 普通的正常的函数

def func(n):
    return n * n
ret = func(9)
print(ret)

# 匿名函数, 语法: lambda 参数: 返回值

a = lambda n : n * n
ret = a(9)
print(ret)
# print(a(5)) # 函数的名字可以认为是a
# print(func.__name__) # 查看函数的名字
# print(a.__name__) # __name__的值都是<lambda>
def func(a, b):
    return a + b
x = lambda a, b: a+b
print(x(1,2))

# 匿名函数, 给函数传递2给参数. 返回最大值

fn = lambda *args: max(args) # 单行函数
print(fn(1,2,5,2,3,4,156,3,2,2,4,5,56,34,34,34,34,88))

3、sorted排序函数用法

lst = ["聊斋", "西游记", "三国演义", "葫芦娃", "水浒传", "年轮", "亮剑"]
def func(s):
    return len(s)%2
ll = sorted(lst, key=func)print(ll)
lst = [
    {‘name‘:"汪峰","age":48},
    {"name":"章子怡",‘age‘:38},
    {"name":"alex","age":39},
    {"name":"wusir","age":32},
    {"name":"赵一宁","age":28}
    ]
ll = sorted(lst, key=lambda el: len(el[‘name‘]), reverse=True)#倒序排列
print(ll)

4、filter筛选函数用法

lst = ["张无忌", "张铁林", "赵一宁", "石可心","马大帅"]
def func(el):
    if el[0] == ‘张‘:
        return False # 不想要的
    else:
        return True # 想要的
# 筛选,
f = filter(lambda el: el[0]!="张", lst) # 将lst中的每一项传递给func, 所有返回True的都会保留, 所有返回False都会被过滤掉
print("__iter__" in dir(f)) # 判断是否可以进行迭代
for e in f:
    print(e)
lst = [
    {"name":"汪峰", "score":48},
    {"name":"章子怡", "score":39},
    {"name":"赵一宁","score":97},
    {"name":"石可心","score":90}
 ]
 f = filter(lambda el: el[‘score‘] < 60 , lst)
print(list(f))

5、map映射函数应用

lst = [1,4,7,2,5,8]
def func(el):
    return el**2
m = map(lambda el: el**2, lst) # 把后面的可迭代对象中的每一个元素传递给function, 结果就是function的返回值
print(list(m))

# 分而治之

# map(func1, map(func2, map(func3 , lst)))

# 水桶效应, zip()

lst1 = [1, 3, 5, 7]
lst2 = [2, 4, 6, 8, 10]
m = map(lambda x, y, z: x + y+ z, lst1, lst2, [5,1,2,3,6])
print(list(m))

6、递归函数

# 递归深度. 你可以自己掉用自己的次数,
# 官方文档中递归最大深度是1000. 在这之前就会给你报错

# 遍历 D:/sylar文件夹, 打印出所有的文件和普通文件的文件名

import os
def func(filepath, n): # d:/sylar/
    # 1,打开这个文件夹
    files = os.listdir(filepath)
    # 2. 拿到每一个文件名
    for file in files:  # 文件名
        # 3. 获取到路径
        f_d = os.path.join(filepath, file) # d:/sylar/文件名/
        # 4. 判断是否是文件夹
        if os.path.isdir(f_d):
            # 5. 如果是文件夹. 继续再来一遍
            print("\t"*n, file,":") # 打印文件名
            func(f_d, n + 1)
        else:   #  不是文件夹. 普通文件
            print("\t"*n, file)
func("d:/sylar",0)

7、二分法查找

# 递归来完成二分法

lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]
def func(n, left, right):
    if left <= right: # 边界
        print("哈哈")
        mid = (left + right)//2
        if n > lst[mid]:
            left = mid + 1
            return func(n, left, right) # 递归  递归的入口
        elif n < lst[mid]:
            right = mid - 1
            # 深坑. 函数的返回值返回给调用者
            return func(n, left, right)    # 递归
        elif n == lst[mid]:
            print("找到了")
            return mid
            # return  # 通过return返回. 终止递归
    else:
        print("没有这个数") # 递归的出口
        return -1 # 1, 索引+ 2, 什么都不返回, None
# 找66, 左边界:0,  右边界是:len(lst) - 1
ret = func(70, 0, len(lst) - 1)
print(ret) # 不是None

原文地址:https://www.cnblogs.com/alifetimelove/p/10771819.html

时间: 2024-10-19 03:06:22

python note 14 其他函数及递归应用的相关文章

Python基础之内置函数和递归

本文和大家分享的主要是python中内置函数和递归相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.内置函数 下面简单介绍几个: 1.abs() 求绝对值 2.all() 如果 iterable 的所有元素都为真(或者如果可迭代为空),则返回  True 3.any() 如果 iterable 的任何元素为真,则返回  True .如果iterable为空,则返回  False 4.callable() 如果  object 参数出现可调,则返回  True ,否则返回  Fal

python协程函数、递归、匿名函数与内置函数使用、模块与包

目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a.生成器相关python函数.装饰器.迭代器.生成器,我们是如何使用生成器的.一个生成器能暂停执行并返回一个中间的结果这就是 yield 语句的功能 : 返回一个中间值给调用者并暂停执行. 我们的调用方式为yeild 1的方式,此方式又称为生成器的语句形式. 而使用生成器的场景:使用生成器最好的场景就

python基础-函数_递归_内置函数

一 数学定义的函数与python中的函数 二 为何使用函数 背景提要 三 函数和过程 四 函数参数 五 局部变量与全局变量 六 前向引用之'函数即变量' 七 嵌套函数 八 递归 九 匿名函数 十 函数式编程 十一 内置函数 十二 本节作业 一.数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数.自变量x的取值范围叫做这个函数的定义域

python函数之递归

一.递归的定义 函数的递归就是在一个函数内调用这个函数本身,python默认递归的最大层数是997. 二.递归实现三级菜单 1 def threeLM(dic): 2 while True: 3 for k in dic:print(k) 4 key = input('input>>').strip() 5 if key == 'b' or key == 'q':return key 6 elif key in dic.keys() and dic[key]: 7 ret = threeLM(

【Python之匿名函数及递归】

一.匿名函数及内置函数补充 1.语法 Python使用lambda关键字创造匿名函数.所谓匿名,意即不再使用def语句这样标准的形式定义一个函数. 语法: lambda [arg1[, arg2, ... argN]]: expression 例: 普通函数 def func(x,y): return x+y print(func) print(func(1,2)) 输出 <function func at 0x102b31f28> 3 等价的匿名函数 #匿名函数 f=lambda x,y:x

Python基础3 函数、递归、内置函数

本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测试, 交集\差集\并集\反向(对称)差集 >>> a = {1,2,3,4} >>> b ={3,4,5,6} >>> a {1, 2, 3, 4} >>> type(a) <class 'set'> >>>

递归:若函数包含了对其自身的调用,该函数为递归的。《Python核心编程》P305

递归:若函数包含了对其自身的调用,该函数为递归的. >>> #递归 <Python核心编程>P305 >>> def factorial(n): if n==0 or n==1:#0!=1!=1 return 1 else: return n*factorial(n-1) >>> factorial(3) 6 >>> factorial(4) 24 >>> 原图

Python函数中多类型传值和冗余参数及函数的递归调用

1.多类型传值和冗余参数 多类型传值: def fun(x,y): return x +y print fun(3,5) 8 print fun(*t) 3 def fun(x,y,z): return x + y + z t1 = (1,2,3) fun(*t1) 6 fun(*(2,4,5)) 11 fun(1,*t) 4 print t (1, 2) fun(x=1,y=3,z=5) 9 >>> dic = {'x':1,'y':3,'z':6} >>> fun(

Python学习(十六)内置函数,递归

1.递归 def test1(): num=int(input('输入数字')) if num%2==0: #判断输入数字是不是偶数 return True #是偶数,程序退出,返回true print('不是偶数请重新输入') return test1() #不是偶数的话继续调用自己,输入值 print(test1()) 递归的效率不高,最多递归999次 2.内置函数 python自带的函数 id()#看内存地址type()#看数据类型print()#打印input()#输入list() #转