内置函数:

https://www.processon.com/view/link/5adc6062e4b04721d63171eb?pw=3218

匿名函数:lambda

lambda 语法: lambda 参数: 表达式

lambda存在意义就是对简单函数的简洁表示。

# 现有两元组 (('a'),('b')), (('c'), ('d')),请用python中的匿名函数生成[{'a':'c'}, {'b':'d'}]
# t1 = (('a'),('b'))
# t2 = (('c'), ('d'))
# print(list(zip(t1, t2)))
# def func(t):
# return {t[0]: t[1]}
# m1 = map(func,zip(t1, t2) )
# print(list(m1))
# ==
# m1 = map(lambda t: {t[0]: t[1]}, zip(t1, t2))
# print(list(m1))
以下代码的输出是什么? 请给出答案并解释
# def multipliers():
# return [lambda x: i*x for i in range(4)]
"""
def multipliers():
retun [lambda x: i*x,lambda x: i*x,lambda x: i*x,lambda x: i*x]
每次循环i都会被重新赋值给,最终i == 3
"""
#
# print([m(2) for m in multipliers()])
# 结果:
# [6, 6, 6, 6]
'''
执行[lambda x: i*x,lambda x: i*x,lambda x: i*x,lambda x: i*x]这个四个函数x都==2,i== 3
''' # 想要产生 0, 2, 4, 6的话,可以修改为生成器表达式,因为生成器默认是取值的时候才会执行的,所以i分别取值为[0,1,2,3]
# def multipliers():
# return (lambda x: i*x for i in range(4))
# print([m(2) for m in multipliers()])

1.map函数,我们使用map函数将会对列表中的所有元素进行操作。map有两个参数(函数,列表),它会在内部遍历列表中的每一个元素,执行传递过来的函数参数。在输出到新列表中。

1 li = [11, 22, 33]
2 new_list = map(lambda a: a + 100, li)
输出:[111, 122, 133]

当然,map还可以完成多个数组的相加:

1 li = [11, 22, 33]
2 sl = [1, 2, 3]
3 new_list = map(lambda a, b: a + b, li, sl)
4 print new_list
输出:[12, 24, 36]

2.reduce函数,对于序列内所有元素进行累计操作:

1 lst = [11,22,33]
2 func2 = reduce(lambda arg1,arg2:arg1+arg2,lst)
3 print 'func2:',func2
输出:func2: 66

3.filter函数,他可以根据条件对数据进行过滤:

1 li = [11, 22, 33]
2 new_list = filter(lambda arg: arg > 22, li)
3 print new_list
输出:[33]

递归函数

我们先来讲一个故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?

从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?

从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?

从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢.....

.这个故事你们不喊停我能讲一天!我们说,生活中的例子也能被写成程序,刚刚这个故事,让你们写,你们怎么写呀?

while True:
story = "
从前有个山,山里有座庙,庙里老和尚讲故事,
讲的什么呢?
"
print(story)

函数的执行方式:

def story():
s = """
从前有个山,山里有座庙,庙里老和尚讲故事,
讲的什么呢?
"""
print(s) while True:
story()

递归的方式实现:

def story():
s = """
从前有个山,山里有座庙,庙里老和尚讲故事,
讲的什么呢?
"""
print(s)
story() story()

初识递归

# 递归调用: 在调用一个函数的过程中,直接或者间接又调用函数的本身,称之为递归函数
# 递归必备的两个阶段1、递推,2、回溯

  递归的最大深度——1000

# def func(n):
# print('--->', n)
# func(n+1)
# func(0) #-->RecursionError: maximum recursion depth exceeded while calling a Python object # python默认的最大递归层数是998层

测试最大递归深度

获取与设置最大深度
import sys
# print(sys.getrecursionlimit()) 获取最大递归层数
# sys.setrecursionlimit() 设置递归深度
"""
setrecursionlimit(n) Set the maximum depth of the Python interpreter stack to n. This
limit prevents infinite recursion from causing an overflow of the C
stack and crashing Python. The highest possible limit is platform-
dependent.
"""
 
# def age(n):
# if n == 1:
# return 18
# return age(n-1) + 2
# print(age(5))

递归实例1

# 递归打印list中子元素不包含list的元素
# l1 = [1, [2, [3, [4, [5, [6]]]]]]
# def func(l):
# for n in l:
# if type(n) is list:
# func(n)
# else:
# print(n)
#
# func(l1)

递归实例2

# 递归总结
# 1、必须有一个明确的结束条件
# 2、每次进入更深一层递归时,问题规模比上次递归应所有减少
# 3、递归效率不高 递归函数与三级菜单
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
} menu

递归实现三级菜单

l = [menu]
while l:
for key in l[-1]:print(key)
k = input('input>>').strip() # 北京
if k in l[-1].keys() and l[-1][k]:l.append(l[-1][k])
elif k == 'b':l.pop()
elif k == 'q':break
												

day4之内置函数、匿名函数,递归函数的更多相关文章

  1. python笔记4 内置函数,匿名函数.递归函数 面向对象(基础, 组合,继承)

    内置函数 eval和exec eval :执行字符串中的代码并将结果返回给执行者,有返回值 exec:执行字符串中的代码,往往用于执行流程语句,没有返回值. s1 = '1+2' s2 = 'prin ...

  2. python基础学习Day14 内置函数 匿名函数

    一.内置函数里几个高频重要函数 (1)min\max函数的用法 以min函数的为例: min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值). l1 =[(,),(, ...

  3. JavaScript---js语法,数据类型及方法, 数组及方法,JSON对象及方法,日期Date及方法,正则及方法,数据类型转换,运算符, 控制流程(三元运算),函数(匿名函数,自调用函数)

    day46 一丶javascript介绍 JavaScript的基础分为三个       1.ECMAScript:JavaScript的语法标准.包括变量,表达式,运算符,函数,if语句,for语句 ...

  4. python学习三十三天函数匿名函数lambda用法

    python函数匿名函数lambda用法,是在多行语句转换一行语句,有点像三元运算符,只可以表示一些简单运算的,lambda做一些复杂的运算不太可能.分别对比普通函数和匿名函数的区别 1,普通的函数用 ...

  5. 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

    [源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...

  6. Learning Python 012 函数式编程 2 返回函数 匿名函数 装饰器 偏函数

    Python 函数式编程 2 返回函数 返回函数的意思就是:函数作为返回值.(高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.) 举个例子:实现一个可变参数的求和. 正常的函数: de ...

  7. ~~函数基础(三):嵌套函数&匿名函数~~

    进击のpython 嵌套函数&匿名函数 讲完作用域之后 对变量的作用范围有大致的了解了吗? 讲个稍微小进阶的东西吧 能够帮助你更加的理解全局和局部变量 嵌套函数 玩过俄罗斯套娃不? 没玩过听过 ...

  8. Golang函数-匿名函数与闭包函数

    Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  9. day12:闭包函数&匿名函数

    闭包函数 闭包函数的定义: 如果内函数使用了外函数的局部变量并且外函数把内函数返回出来的过程 叫做闭包里面的内函数是闭包函数 一个简单的闭包函数示例: def songyunjie_family(): ...

随机推荐

  1. python: no module named bz2

    https://stackoverflow.com/questions/8115280/importerror-no-module-named-bz2-for-python-2-7-2 centos6 ...

  2. HTML转义

    HTML转义 模板对上下文传递的字符串进行输出时,会对以下字符自动转义 小于号< 转换为< 大于号> 转换为> 单引号' 转换为' 双引号" 转换为 " 与 ...

  3. conductor Kitchensink示例

    一个示例的厨房工作流程,演示了所有模式构造的使用. 定义 { "name": "kitchensink", "description": & ...

  4. web中的中文乱码处理

    1.页面设置pageEncoding="UTF-8" <%@ page contentType="text/html;charset=UTF-8" lan ...

  5. spring boot 配置 freemarker

    1.springboot 中自带的页面渲染工具为thymeleaf 还有freemarker 这两种模板引擎 简单比较下两者不同, 1.1freemaker 优点 freemarker 不足:thym ...

  6. inputStream、File、Byte、String等等之间的相互转换

    一:inputStream转换 1.inputStream转为byte //方法一 org.apache.commons.io.IOUtils包下的实现(建议) IOUtils.toByteArray ...

  7. php session阻塞页面分析及优化 (session_write_close session_commit使用)

    转: http://www.tuicool.com/articles/bqeeey 首先看下下面代码, session1.php 文件 <?php ini_set('session.save_p ...

  8. Spring框架之Bean的作用范围和生命周期的注解

    1. Bean的作用范围注解 * 注解为@Scope(value="prototype"),作用在类上.值如下: * singleton -- 单例,默认值 * prototype ...

  9. DataTableExtensions

    public static class DataTableExtensions { public static List<dynamic> ToDynamic(this DataTable ...

  10. jq给动态生成的标签绑定事件的几种方法

    经常遇到给动态生成的标签绑定事件不好用,自己简单测试总结了下,结论如下了: body> <!-- 下面是用纯动态方式生成标签 --> <div id="d2" ...