递归之二分法

def sc_func(num,lis):
lis_len=int(len(lis)/2)
binary_num=lis[lis_len]
# print(binary_num) if len(lis)==1:
print('没找到')
return
if binary_num>num:
lis=lis[:lis_len]
sc_func(num,lis)
elif num<binary_num:
lis=li1s[lis_len,lis]
sc_func(num,lis) else:
print('找到了')

匿名函数

1.有名函数

以前定义的函数都是有名函数,它是基于函数名使用

2.匿名函数

匿名函数,他没有绑定名字,使用一次即被收回,加括号即可运行

lambda x,y:x+y

与内置函数联用

匿名函数通常与max(),sorted(),filter()方法联用

salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000
}
max(salary_dict): tank
max(salary_dict, key=func()): jason
max(salary_dict, key=lambda name: salary_dict[name]): jaso

1.如果我们想从上述字典中取出薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的key。

首先将可迭代对象变成迭代器对象

res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据

2.如果我们想对上述字典中的人,按照薪资从大到小排序,可以使用sorted()方法。

sorted()工作原理:

首先将可迭代对象变成迭代器对象

res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后将该函数的返回值当做判断依据。

lis = [1, 3, 2, 5, 8, 6]
sorted(lis)
print(f"lis: {lis}")
print(f"sorted(lis,reverse=True): {sorted(lis,reverse=True)}") #结果
lis: [1, 3, 2, 5, 8, 6]
sorted(lis,reverse=True): [8, 6, 5, 3, 2, 1]

3.如果我们想对一个列表中的某个人名做处理,可以使用map()方法。

map()工作原理:

首先将可迭代对象变成迭代器对象

res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后将该函数的返回值作为map()方法的结果之一。

4.如果我们想筛选除名字中含有'sb'的名字,我们可以使用filter()方法。

filter()工作原理:

首先将可迭代对象变成迭代器对象

res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后filter会判断函数的返回值的真假,如果为真则留下。

常用内置函数

bytes()

chr()/ord()

divmod()

enumerate()

eval()

hash()

1.bytes()

解码字符

res = '你好'.encode('utf8')

print(res)

2.chr()/ord()

chr()参考ASCII码表将数字转成对应字符;ord()将字符转换成对应的数字。

3.divmod()

分栏

4.enumerate()

带有索引的迭代。

5.eval()

把字符串翻译成数据类型。

6.hash()

是否可哈希。

了解

abs() --求绝对值

all() --可迭代对象内元素全为真,则返回真。

any()--可迭代对象中有一元素为真,则为真。

bin()/oct()/hex()--二进制、八进制、十六进制转换。

dir()--列举出所有time的功能。

frozenset()--不可变集合。

globals()/loacals()--查看全局名字;查看局部名字。

pow()

round()

slice()

sum()

import()--通过字符串导入模块。

面向过程编程

面向过程编程是解决问题的一种思想,相当于武林门派,武林门派之间没有好坏之分,因此它与我们之后学习的面向对象编程其实没有好坏之分。

面向过程编程,核心是编程二字,过程指的是解决问题的步骤,即先干什么、后干什么、再干什么、然后干什么……

基于该思想编写程序就好比在设计一条流水线,面向对称编程其实是一种机械式的思维方式。

当我们写登录功能,我们首先需要输入账号、密码,然后认证两次密码是否相同,然后从数据库中读取密码验证用户密码输入是否正确,然后输入验证码……之后,我们就能够实现登录功能。这样把登录功能问题流程化,进而是解决问题的思路非常清晰。

优点:复杂的问题流程化,进而简单化。

生产汽水瓶的流水线,没办法生产特斯拉。流水线下一个阶段的输入与上一个阶段的输出是有关联的。因此他的扩展性极差。

缺点:扩展性差。

Day 14 匿名函数的更多相关文章

  1. python 之 匿名函数

    5.14 匿名函数 lambda x , y : x+y 1 匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的 2 匿名函数的参数规则.作用域关系与有名函数是一样的 3 匿名函数的函数体通 ...

  2. js匿名函数自执行的好处

    我们知道,在创建一个函数时如果要用到变量来存取信息的话,要尽量使用局部变量. 因为一方面局部变量会随着函数的执行结束被销毁:另一方面在不执行函数的时候也不会创建这个局部变量,对节省空间资源有很大的好处 ...

  3. day 14 递归、匿名函数、内置函数

    三目运算符 # 三目(元)运算符:就是 if...else...语法糖# 前提:简化if...else...结构,且两个分支有且只有一条语句# 注:三元运算符的结果不一定要与条件直接性关系​cmd = ...

  4. day 14 三元运算符,列表字典推导式,递归,匿名函数,内置函数(排序,映射,过滤,合并)

    一.三元运算符 就是if.....else..... 语法糖 前提:if和else只有一条语句 #原始版 cmd=input('cmd') if cmd.isdigit(): print('1') e ...

  5. Learning-Python【14】:匿名函数与函数递归

    一.什么是匿名函数 匿名函数就是没有名字的函数,又叫lambda表达式.用于一些简单的需要用函数去解决的问题,特点是只能在定义时使用一次,且函数体只有一行 匿名函数的定义就相当于只产生一个变量的值,而 ...

  6. 『Python基础-14』匿名函数 `lambda`

    匿名函数和关键字lambda 匿名函数就是没有名称的函数,也就是不再使用def语句定义的函数 在Python中,如果要声匿名函数,则需要使用lambda关键字 使用lambda声明的匿名函数能接收任何 ...

  7. 14、函数之匿名函数(lambda)

    关键字lambda可以创建匿名函数,语法是:lambda 参数s :表达式.匿名函数与普通函数只有以下几点不同:①没有函数名:②只能有一个表达式:③一定会有返回值,返回值就是该表达式的结果. 另外,匿 ...

  8. Python实用笔记 (14)函数式编程——匿名函数

    当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外, ...

  9. python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)

    1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...

随机推荐

  1. 0919MYSQL中取当前周/月/季/年的第一天与最后一天

    http://blog.csdn.net/cleanfield/article/details/41447585 整理后的sql代码,全部可执行 #当年第一天: SELECT DATE_SUB(CUR ...

  2. axios 全攻略之基本介绍与使用(GET 与 POST)

    axios axios 是一个基于 Promise 的 HTTP 客户端,专门为浏览器和 node.js 服务 Vue 2.0 官方推荐使用 axios 来代替原来的 Vue request,所以这里 ...

  3. HDU 5186

    easy !! #include <iostream> #include <cstdio> #include <algorithm> #define LL __in ...

  4. LAS文件转TXT文件

    LAS文件转TXT文件 https://www.liblas.org/start.html

  5. Android实战简易教程-第六十六枪(server端搭建和server端Json数据交互)

    学习Android有一段时间了.对server端有非常深的好奇,决定对server端的实现进行一些研究,这里实现了一个简单的小样例,用于获取server端的json数据,样例非常easy,适合刚開始学 ...

  6. xcode Automatic signing is unable to resolve an issue with the "ShowCar-IOS" target's entitlements

    1.https://stackoverflow.com/questions/37806538/code-signing-is-required-for-product-type-application ...

  7. 在linux下怎么安装.bin的文件

    *.bin文件安装方法: 1.运行终端到文件目录下2.在终端输入:sudo chmod +x *.bin3.再输入:sudo ./*.bin可安装到任意目录,./*.bin可安装到当前用户有权限的目录

  8. Nginx实战系列之功能篇----后端节点健康检查

    目前,nginx对后端节点健康检查的方式主要有3种,这里列出:   1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)    官网地址: ...

  9. CCS3的过渡、变换、动画以及响应式布局、弹性布局

    CSS3 过渡 .变换.动画 在没有CSS3之前,如果页面上需要一些动画效果,要么你自己编写 JavaScript,要么使用 JavaScript 框架(如 jQuery)来提高效率. 但是CSS3出 ...

  10. 腾讯新闻多图jQuery相册展示效果代码

    腾讯新闻多图jQuery相册代码,带左右切换箭头,带缩略图,可左右切换,点击缩略图展示原图. 在线演示本地下载