函数的小知识

it2022-05-05  190

函数的递归

函数在调用阶段直接或间接调用自身

#直接调用 def func(n): print('from func',n) func(n+1) func(1) #间接调用 def outter(): print('from outter') inner() def inner(): print('from inner') outter() inner()

递归分为两个阶段:

1.回溯:一次次重复的过程,但是这个重复的过程必须建立在问题的复杂度越来越低的基础上,直到有一个最终的结束条件

2.递归:一次次往回推到的过程

补充知识点:

import sys sys.getrecursionlimit() sys.setrecursionlimit(2000) #定义深度

二分算法:

  算法:把解决问题的效率变得更高

二分法:容器类型里面的数字必须要有大小顺序

l = [1,3,5,12,57,89,101,123,146,167,179,189,345]

l = [1,3,5,12,57,89,101,123,146,167,179,189,345] num = 179 def get_num(l,num) if not l: print('no') return lis = len(l) // 2 if num < l[lis]: l_left = l[:l[lis]] get_num(l_left,num) elif num > l[lis]: l_right =l[l[lis]+1:]] get_num(l_right,num) else: print('find it',num)

三元表达式

  x if x > y else y

  当x的值大的时候返回x,反之返回y

三元表达式固定表达式   值1 if 条件 else 值2   条件成立 值1   条件不成立 值2

三元表达式的应用场景:

goods = input('>>:') res = 'apple' if goods == 'y' else 'banana'print(res)

列表生成式:

l = ['yzy','yyy','ccc'] lis = ['%s_nb' for name in l ] print(lis) l = ['%s_nb', '%s_nb', '%s_nb','yyy'] res = [name for name in l if name.endswith('b')] print(res)

先for循坏依次取出列表里面的每一个元素

然后交由if判断 条件成立才会交给for前面的代码

条件不成立 当前的元素直接舍弃

字典生成式:

l1 = ['yzy','123','read'] d = {k:v for k,v in enumerate(l1) if j != '123'} print(d)

匿名函数

  1.没有名字的函数

  2.匿名函数的特点

    临时存在用完就没了

def my_sum(x,y) return x + y res = (lambda x,y:x+y) print(res) lambda x,y:x+y #左边的相当于函数的形参 #右边的相当于函数的返回值 #匿名函数通常不会单独使用,是配合内置函数一起使用

常用的内置函数

max

d = { 'yzy':9000, 'abb':2000, 'yyy':10000 } res = max(d,key=lambda name:d[name]) print(res) map 映射 l = [1,2,3,4,5] print(list(map(lambda x:x+5,l))) zip拉链 l1 = [1,2] l2 = ['yzy','yyy'] print(list(zip(l1,l2))) reduce from functools import reduce l = [1,2,3,4,5] print(reduce(lambda x,y:x+y,l))

 

转载于:https://www.cnblogs.com/KrisYzy/p/11176804.html


最新回复(0)