万物之源泉14 内置函数二

一. lamda匿名函数

为了解决一些简单的需求而设计的一句话函数# 计算n的n次方

#先用之前的函数办法
def func(n):
    return n**2
print(func(9))
#用lambda方法:
a = lambda n : n*n
print(a(9))

lambda表示的是匿名函数 不需要用def声明

语法:

  函数名 = lambda 参数 : 返回值

而匿名函数返回的是lambda,所有函数都叫lambda

注意:

1.函数可以参数可以有多个,多个参数用逗号隔开

2.匿名函数不管有多复杂,只能写一行,且逻辑结束后返回数据

3.返回值和函数一样,可是任意数据类型

匿名函数并不是说没有名字,这里前面的变量就是一个函数名,说他是匿名的原因是我们通过__name__查看的时候是没有名字的,统一叫做lambda,在调用的时候没有什么特别之处,和正常函数调用即可

#若传100个数,选出最大值
fn = lambda*arg :max(arg)print(fn(let))

二.sorted()排序函数

语法:sorted(Iterable可迭代的,key = None,reverse翻转 = False)

key = 排序方案  sorted函数内部会把可迭代对象中的每一个元素拿出来交给后面的key 后面的key计算出一个数,作为这个元素的权重  整个函数根据权重来进行计算

lst= [{"褚熙":"大傻子"},{"刘伟":"牛"},{"王玉杰":"狗"},{"曾老师":"五行之外"}]
def func(x):
    for i in x:
       return len(x[i])
print(sorted(lst,key=func,reverse=True))

lst = [{"id": 1, "name": ‘alex‘, "age": 18},
    {"id": 2, "name": ‘wusir‘, "age": 16},
    {"id": 3, "name": ‘taibai‘, "age": 17}]
按照年龄对学?信息进?排序
def func(x):
    return x["age"]
a = lambda x : x["age"]
print(sorted(lst,key=lambda x : x["age"],reverse= True))
lis =[22,27,31,64,48,5,22,46,18]
print(sorted(list(filter(lambda age :age>=18 and age % 2 == 0,lis))))

三.filter() 过滤(筛选)函数

语法:filter(function,Iterable 可迭代对象)

function:用来筛选的函数,在filter中会自动把iterable中的元素传递给function 根据function返回的True或者FALSE来判断保留此数据

lst = [{"id": 1, "name": ‘alex‘, "age": 18},
    {"id": 2, "name": ‘wusir‘, "age": 16},
    {"id": 3, "name": ‘taibai‘, "age": 17}]
print(list(filter(lambda x :x["age"] >17,lst)))
print([i  for i in lst if i["age"]>17])

四.map  映射函数

语法:map(function,iterable)可以对可迭代对象中的每一个元素进行映射,分别取执行function

#用map计算列表的平方 返回一个新列表
def func(i):
    return i*i
mp  = map(func,[1,2,3,4,5]
print(mp)#出来的是内存地址
print(list(mp))#强制转换成列表的形式
#写成lambda
print(list(map(lambda x :x*x)))

#将数字排序
lst = [1,5,9,3,5,7]
print(sorted(list(map(lambda num : num +1,lst)),reverse = True))

五,递归

在函数中调用函数本身,就是递归

def func():
    print("你开心吗?")
    func()
func()

求递归的深度

def func(n):
    print(n)
    n += 1
    func(n)
func(1)

这里的默认值是1000  但是你要是改的话是可以的,引入一个模块

import sys

sys.setreursionlimit(5000)  但是一般不建议修改

import os
def func(file_path,index=0):#file_path 路径
    lst = os.listdir(file_path)  #os.listdir()拿到指定路径下的文件名
    for file_name in  lst:
        #全局路径
        path_abs = os.path.join(file_path,file_name)#在os模块下面拿到path(路径类)下的jion方法
        if os.path.isdir(path_abs):#如果这个路径是一个文件夹的话
            print("\t"*index,file_name)
            func(path_abs,index+1)
        else:
            print("\t"*index,file_name)
func("f:\KuGou")

六,二分法

# 二分法查找的效率特别高.
# 缺点: 有序序列
#
# lst = [1,8,16,32,55,78,89,1,5,4,7,5,9,6,8,5,4,5,44,5,2,1,4,5,1]
# # [1, 1, 1, 1, 2, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 7, 8, 8, 9, 16, 32, 44, 55, 78, 89]
# lst = sorted(lst)
# n = int(input("请输入一个数:"))
# left = 0
# right = len(lst) - 1
#
while left <= right: #
    mid = (left + right) // 2  # 索引只能是整数
    if n > lst[mid]:
        left = mid + 1
    elif n < lst[mid]:
        right = mid - 1
    else:
        print("在这个列表中.所在的位置%s" % mid)
        break
else:
    print("你要找的数. 不在这个序列中")

# 递归的第一套方案
def func(n, lst):
    left = 0
    right = len(lst) - 1
    if left <= right:
        mid = (left + right)//2
        if n > lst[mid]:
            new_lst = lst[mid+1:]
            return func(n, new_lst)
        elif n < lst[mid]:
            new_lst = lst[:mid]
            return func(n, new_lst)
        else:
            print("刚刚好, 在这里出现了")
            return True
    else:
        return False

lst = [1, 1, 1, 1, 2, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 7, 8, 8, 9, 16, 32, 44, 55, 78, 89]
ret = func(2, lst)
print(ret)

# 第二套方案
def func(n, lst, left=0, right=None):
    if right == None:
        right = len(lst) - 1
    if left <= right:
        mid = (left + right) // 2
        if n > lst[mid]:
            left = mid + 1
        elif n < lst[mid]:
            right = mid - 1
        else:
            return True
        return func(n, lst, left, right)
    else:
        return False

原文地址:https://www.cnblogs.com/zhaodingding/p/9683009.html

时间: 2024-10-07 11:56:51

万物之源泉14 内置函数二的相关文章

15 .内置函数(二),递归函数,二分法

14. 前 方 高能-内置函数 二 本节主要内容: lamda匿匿名函数 sorted() filter() map() 递归函数 一. lamda匿匿名函数为了了解决 一些简单的需求 而设计的 一句句话函数 # 计算n的n次 方 def func(n): return n**n print(func(10)) f = lambda n: n**n print(f(10)) lambda表 示的是匿匿名函数. 不需要 用def来声明,  一句句话就可以声明出 一个函数 语法: 函数名 = lam

学习13.内容# 1.内置函数二 # 2.闭包

目录 内置函数二 重要的内置函数和匿名函数 闭包 内置函数二 abs 绝对值 返回的都是正数 print([abd(i) for i in lst]) enumerate 枚举 ("可迭代对象","序号的起始值") 默认起始值是0 [(0,1),(1,2),(2,3)] print([i for i in enumerate(lst,10)]) lst = [11,22,33,-44,23,21] new_lst = [] for i in enumerate(ls

内置函数(二) 闭包

内置函数(二) 内置函数 1.abs( ) print([abs(i) for i in lst]) # 绝对值 -- 返回的都是正数 2.enumerate( ) [(0,1)(1,2)(2,3)] print([i for i in enumerate(lst,10)]) # 枚举("可迭代对象","序号的起始值") 默认的起始值是 0 3.max( ) print(max([1,2,3,4,56,7,8])) # 求最大值 print(max([1,2,-33

14 内置函数

主要内容: 内置函数:就是python给你提供,拿来直接使用的函数. 1. 作用域相关: locals()    返回当前作用域中的名字. globals()  返回全局作用域中的名字. def fn(): a = 10 print(locals()) #当前作用域中的内容,如果在全局作用域中,则显示全局作用域的内容. print(globals()) #全局作用域中的内容 print("今天内容很简单") fn() 2. 迭代器相关: range()    生成数据 for i in

内置函数二、递归、二分法

一.lambda匿名函数 为了解决一些简单的需求而设计的一句话函数,如下示例: # 以前的写法 def func(n): return n ** n print(func(10)) # lambda函数 f = lambda n : n ** n print(f(10)) print(f.__name__) # 结果为:<lambda> # __name__可以查看函数的名字,匿名函数__name__的值都是<lambda> lambda表示的是匿名函数,不需要用def来声明,一句

Python 13 内置函数二

内置函数知识点二 lamda匿名函数 sorted() filter() map() 递归函数 lamda 怎么使用 #计算n的n次方 普通的函数写 def func(n): return n**n print(func(10)) 一, lamda匿名函数 为了解决一些简单的需求而设计的一句话函数 f = lambda n: n**n print(f(10)) lambda表明的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数 语法: 函数名 = lambda 参数: 返回值 注

Python入门-内置函数二

看到标题你也能猜到今天要说大概内容是什么了,没错,昨天没有说完的部分再给大家说说(有一些重合的部分),内置函数的内容比较多,并且工作中经常用到的却不太多,很多都是不太常用的,所以我就着重说一些比较常用的,今天再说两个函数:匿名函数和递归函数.还有就是二分法查找 首先来说一下匿名函数,因为几个比较重要的内置函数都要和匿名函数搭配来用 一.匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): return n**n print(func(10)) f =

百万年薪python之路 -- 内置函数二 -- 最常用的内置函数

1.内置函数 1.1 匿名函数 匿名函数,顾名思义就是没有名字的函数(其实是有名字的,就叫lambda),那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话函数. 现在有一个需求:你们写一个函数,此函数接收两个int参数,返回 和的值. def func(a,b): return a+b print(func(3,4)) 那么 接下来我们用匿名函数完成上面的需求: func = lambda a,b: a+b print(func(3, 4)) # 7

14 内置函数(一)

13. 前 方 高能-内置函数 一 一. 本节主要内容: 1.  内置函数 什什么是内置函数? 就是python给你提供的. 拿来直接 用的函数, 比如print., input等等. 截 止到python版本3.6.2 python 一共提供了了68个内置函数. 他们就是python直接提供给我们的. 有 一些我们已经 用过了了. 有 一些还没有 用过. 还有 一些需要学完了了 面向对象才能继续学习的. 今天我们就认识 一下python的内置函数. abs() dict() help() mi