一、算法简介之二分法

1、什么是算法

  • 算法是指数学运算,在python中算法是指数学运算和代码相结合,能够高效的解决一些问题

2、算法的应用场景

  • 算法的应用场景非常广阔,在我们日常中的网购、抖音、拍照识别都是通过算法完成

3、二分法

什么是二分法:二分法是一直最基础的算法,通过将数据分割、比对来提高工作效率

缺陷:针对开头或结尾的数据,查找效率很低

代码用法:

# 设置一段列表
list_1 = [11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 202, 303, 404, 505, 606, 707, 808, 909]
# 定义想要查找的数据指
target_num = 505 # 6、使用递归函数循环重复查找
def func(list_1, target_num):
# 7、添加结束条件
if len(list_1) == 0:
print('这里没有你要的值')
# 1、获取列表中间索引值
middle_index = len(list_1) // 2
# 2、比较目标数据值与列表中间数据值
if target_num > list_1[middle_index]:
# 3、切片保留列表右边
r_list_1 = list_1[middle_index + 1:]
# 针对目标值右边继续循环
return func(r_list_1, target_num)
# 4、继续比较目标数据值
elif target_num < list_1[middle_index]:
# 5、保留列表左侧
l_list_1 = list_1[:middle_index]
# 针对目标值左边边继续循环
return func(l_list_1, target_num)
# 5、当以上条件都不成立则说明目标数据中等于索引值
elif middle_index == len(list_1) // 2:
print(f'找到了{target_num}') func(list_1, 505
)
--------------------------------------------------------------
找到了 505

二、三元表达式

1、简介及用法

  • 三元表达式是指,当结果是二选一的情况下我们可以做到优化代码使代码简写,当有多个条件和嵌套时不推荐使用

代码用法:

1.常规用法
name = 'kangkang'
if name == 'kangkang':
print('三好学生')
else:
print('普通学生') 2.三元表达式用法
name = 'kangkang'
res = '三好学生' if name = 'kangkang' else '普通学生'
print(res)

三、各种生成式

​ 可以更加方便、快捷的对列表、字典、集合内数据值进行修改

1、列表生成式

  • 可搭配for 、if 、range()等多种内置方法快速便捷生成需要的列表
# 设置一段列表
name_list = ['zhangshan', 'lisi', 'wangwu', 'zhangermazi']
# 条件:给上方列表内所有数据加上'YYDS' # 1、常规方式 for循环
new_name_list = []
for name in name_list:
new_name_list.append(name + 'YYDS')
print(new_name_list)
-------------------------------------------------------------
['zhangshanYYDS', 'lisiYYDS', 'wangwuYYDS', 'zhangermaziYYDS'] # 2、列表生成式用法
new_name_list = [name + 'YYDS' for name in name_list]
print(new_name_list)
------------------------------------------------------------
['zhangshanYYDS', 'lisiYYDS', 'wangwuYYDS', 'zhangermaziYYDS'] '''
原理:
# 普通的生成式
[表达式 for 变量 in 旧列表]
# 加条件的生成式
[表达式 for 变量 in 旧列表 if 条件]
# if...else条件的生成式
[表达式 if 条件1 else 条件2for 变量 in 旧列表]
'''

进阶用法一:

new_name_list = [name + 'YYDS' for name in name_list if name == 'zhangshan']
print(new_name_list)
-----------------------------------------------------------
['zhangshanYYDS'] '''
原理:
在基础用法上添加判断,在遍历后方添加条件,通过后进行修改数据值 '''

进阶用法二:

new_name_list = ['YYDS' if name == 'zhangshan' else 'DZD' for name in name_list if name != 'wangwu']
print(new_name_list)
-------------------------------------------------------------
['YYDS', 'DZD', 'DZD']
'''
原理:
将相对于应位置,按条件更换数据值
'''

2、字典生成式

  • 搭配enumerate使用
# 字典生成式
str1 = '开开心心' dict1 = {i: j for i, j in enumerate('开开心心', start= 10)}
print(dict1)
------------------------------------------------------------
{10: '开', 11: '开', 12: '心', 13: '心'}
  • 键值对互换
d1 = {'a':'A', 'b':'B', 'c':'C'}
d2 = {v:k for k, v in d1.items()}
print(d2 )
-------------------------------------------------------------
{'A': 'a', 'B': 'b', 'C': 'c'}

3、集合生成式

代码用法:#与列表生成式基本相同

# 普通的生成式
{表达式 for 变量 in 旧列表}
# 加条件的生成式
{表达式 for 变量 in 旧列表 if 条件}
# if...else条件的生成式
{表达式 if 条件1 else 条件2for 变量 in 旧列表}

四、匿名函数

1、什么是匿名函数

  • 匿名函数是指没有函数名的函数,通常搭配在函数内或条件使用

2、匿名函数用法

关键字lambda
语法结构
lambda 形参:返回值
使用场景
lambda a,b:a+b
匿名函数一般不单独使用 需要配合其他函数一起用

五、常见内置函数

1、map()

代码用法:
map(func,iterable)
'''
func为函数名,可为lambda匿名函数,iterable为可迭代对象
此函数会将可迭代对象中的每一位元素作为参数传递到func中,并将func的计算结果加入到新列表内,map()返回的是一个包含所有结果的新列表。
'''
l1 = [1, 2, 3, 4, 5]
def func(a):
return a + 1
res = map(lambda x:x+1, l1)
print(list(res))
--------------------------------------------------------------
[2, 3, 4, 5, 6]

2、max()、min()

代码用法:
max(*args, key=None)
'''
*args作为可迭代对象,key可为lambd匿名函数,可返回最大值
'''

3、reduce

代码用法:
# 插入模块
from functools import reduce
reduce(function, sequence, initial=_initial_missing)
'''
function可为lambd函数,可为迭代对象进行基础运算
'''

Python基础之函数:4、二分法、三元表达式、生成/推导式、匿名函数、内置函数的更多相关文章

  1. python之三元表达式与生成式与匿名与内置函数(部分)

    目录 三元表达式 各种生成式 列表生成式(可同样作用于集合) 字典生成式 匿名函数 重要内置函数 map() zip() filter() reduce() 常见内置函数(部分) 三元表达式 三元表达 ...

  2. day12——生成器、推导式、简单内置函数

    day12 生成器 迭代器:python中内置的一种节省空间的工具 生成器的本质就是一个迭代器 迭代器和生成器的区别:一个是pyhton自带的,一个是程序员自己写的 写一个生成器 基于函数 在函数中将 ...

  3. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

  4. Python开发基础-Day10生成器表达式形式、面向过程编程、内置函数部分

    生成器表达式形式 直接上代码 # yield的表达式形式 def foo(): print('starting') while True: x=yield #默认返回为空,实际上为x=yield No ...

  5. python基础之生成器表达式形式、面向过程编程、内置函数部分

    生成器表达式形式 直接上代码 1 # yield的表达式形式 2 def foo(): 3 print('starting') 4 while True: 5 x=yield #默认返回为空,实际上为 ...

  6. python基础12_匿名_内置函数

    一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...

  7. python基础之递归,匿名,内置函数

    递归函数: 什么是递归函数? 函数递归调用:在调用一个函数的过程中,又直接或间接地调用了该函数本身. 递归必须要有两个明确的阶段: ①递推:一层一层递归调用下去,强调:每进入下一层问题规模减少 ②回溯 ...

  8. pathon 基础学习-集合(set),单双队列,深浅copy,内置函数

    一.collections系列: collections其实是python的标准库,也就是python的一个内置模块,因此使用之前导入一下collections模块即可,collections在pyt ...

  9. day19-1 迭代器,三元表达式,列表推导式,字典生成式,

    目录 迭代器 可迭代对象 迭代器对象 总结 三元表达式(三目表达式) 列表推导式 字典生成式 迭代器 可迭代对象 拥有iter方法的对象就是可迭代对象 # 以下都是可迭代的对象 st = '123'. ...

  10. Python——day14 三目运算、推导式、递归、匿名、内置函数

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

随机推荐

  1. 使用 Less 混合(Mixins)时报语法错误

    今天在尝试使用 less 的混合语法时,浏览器直接报了一个语法错误.下图是报错信息: 仔细地阅读了官方文档,和对比自己写的,并没有任何错误. .FlexLayout { .Start() { disp ...

  2. Excel 文本函数(二):CONCATENATE 和 CONCAT

    在 Excel 2016.Excel Mobile 和 Excel 网页版中,CONCATENATE 函数已替换为 CONCAT 函数. CONCATENATE 函数只能拼接单个单元格或文本字符,不能 ...

  3. java中使用 POI导出excel表格的简单实现

    大概流程分7步: 1.创建工作簿 --> 2.创建sheet表 --> 3.创建row行(建议使用循环) --> 4.用row行逐一创建单元格(建议使用循环) --> 5.单元 ...

  4. 制作离线yum源

    互联网上操作 1.安装所需依赖环境和软件包 1.1安装命令 yum install yum-utils createrepo 1.2各软件包功能 createrepo :生成yum 源各软件之间的依赖 ...

  5. linux之间上传下载--SCP

    1.远程拷贝文件 [root@rhel8-client01 yum.repos.d]# scp root@192.168.72.149:/etc/yum.repos.d/* . (.表示拷贝到当前文件 ...

  6. 在cmd中使用doskey来实现alias别名功能

            作为一枚网络工程师,经常就是面对一堆黑框框,也是就是终端.不同操作系统.不同厂家的目录,功能相同但是键入的命令又大不相同,这些差异化容易让脑子混乱.比如华为.思科.H3C.锐捷的设备, ...

  7. csp每日习题

    欢迎加入:qq群号:1054587486 做题链接:https://csp.ccf.org.cn/csp/index.action?_access_code=1584494752035 点击模拟考试进 ...

  8. [python]-random模块-手动随机数

    random模块通常用来生成随机数,结合time模块生成随机数的代码: import time import random random.seed(time.time()) x = random.ra ...

  9. ingress-nginx 的使用 =》 部署在 Kubernetes 集群中的应用暴露给外部的用户使用

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488189&idx=1&sn=8175f067 ...

  10. python动态参数

    Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号的区别,而不是args和kwargs在名字上的区别,实际上你可以使用*any或**whatever的方式. ...