day4之内置函数、匿名函数,递归函数
内置函数:
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之内置函数、匿名函数,递归函数的更多相关文章
- python笔记4 内置函数,匿名函数.递归函数 面向对象(基础, 组合,继承)
内置函数 eval和exec eval :执行字符串中的代码并将结果返回给执行者,有返回值 exec:执行字符串中的代码,往往用于执行流程语句,没有返回值. s1 = '1+2' s2 = 'prin ...
- python基础学习Day14 内置函数 匿名函数
一.内置函数里几个高频重要函数 (1)min\max函数的用法 以min函数的为例: min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值). l1 =[(,),(, ...
- JavaScript---js语法,数据类型及方法, 数组及方法,JSON对象及方法,日期Date及方法,正则及方法,数据类型转换,运算符, 控制流程(三元运算),函数(匿名函数,自调用函数)
day46 一丶javascript介绍 JavaScript的基础分为三个 1.ECMAScript:JavaScript的语法标准.包括变量,表达式,运算符,函数,if语句,for语句 ...
- python学习三十三天函数匿名函数lambda用法
python函数匿名函数lambda用法,是在多行语句转换一行语句,有点像三元运算符,只可以表示一些简单运算的,lambda做一些复杂的运算不太可能.分别对比普通函数和匿名函数的区别 1,普通的函数用 ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- Learning Python 012 函数式编程 2 返回函数 匿名函数 装饰器 偏函数
Python 函数式编程 2 返回函数 返回函数的意思就是:函数作为返回值.(高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.) 举个例子:实现一个可变参数的求和. 正常的函数: de ...
- ~~函数基础(三):嵌套函数&匿名函数~~
进击のpython 嵌套函数&匿名函数 讲完作用域之后 对变量的作用范围有大致的了解了吗? 讲个稍微小进阶的东西吧 能够帮助你更加的理解全局和局部变量 嵌套函数 玩过俄罗斯套娃不? 没玩过听过 ...
- Golang函数-匿名函数与闭包函数
Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- day12:闭包函数&匿名函数
闭包函数 闭包函数的定义: 如果内函数使用了外函数的局部变量并且外函数把内函数返回出来的过程 叫做闭包里面的内函数是闭包函数 一个简单的闭包函数示例: def songyunjie_family(): ...
随机推荐
- Jquery无缝轮播图的制作
轮播是html页面中比较常见的一种展现形式,也是基础,把轮播图做好,是排版中比较关键的 1.首先是轮播的html元素放置:做轮播之前,要有一个初步的认识 2.每个元素的位置怎样摆放,也是很关键的,这里 ...
- Haskell语言学习笔记(28)Data.Map
Map Prelude> import Data.Map as Map Prelude Map> :set -XOverloadedLists Prelude Map> Overlo ...
- 视频采集,存成avi
视频采集,存成aviunit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Form ...
- StringBuild的一个小问题
今天在项目开发的过程中写了一小段代码: sb_result.AppendFormat("{\"SmsmTaskModeName\":\"{0}\",\ ...
- 配置MySQL 5.6的主从复制
工具/原料 Windows 7 64位 MySQL 5.6 配置新数据库的主从复制 1 先在主数据库中创建新数据库rep_test. 然后编辑主数据库的my.ini文件 在[mysqld]节点 ...
- selenium IDE常用命令
1.open(URL)命令 1.作用:打开指定的URL,URL或者为相对或是绝对的URL 2.target:要打开的URL,value值 ...
- Java的三种多线程
项目结构 继承Thread类 /* * Thread类实现了Runnable接口 */ public class MyThread extends Thread { @Override public ...
- jQuery之双下拉框
双下拉框要实现的效果,实际上就是左边下拉选择框里的内容,可以添加到右边,而右边同理.写了个简单的例子,来说明一下. 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- ecplise导入工程出现乱码的解决方案
eclipse之所以会出现乱码问题是因为eclipse编辑器选择的编码规则是可变的.一般默认都是UTF-8或者GBK,当从外部导入的一个工程时,如果该工程的编码方式与eclipse中设置的编码方式不同 ...
- SSH三大框架需要的配置文件
1. Struts2框架 * 在web.xml中配置核心的过滤器 <filter> <filter-name>struts2</filter-name> <f ...