今日内容概要
- 算法简介及二分法
- 三元表达式
- 各种生成制
- 匿名函数
- 重要内置函数
- 常见内置函数
算法简介及二分法
1.什么算法?
解决问题的有效方法,不是所有的算法都是高效 也有不合格的算法
2.算法应用场景
推荐算法(抖音视频推送 淘宝商品推送 )
成像算法(AI相关)
几乎涵盖了生活的方方面面
3.算法工程师要求
待遇非常好 但是要求非常高(985+硕士研究生起步,一般高校优秀毕业生)
4.算法部门
不是所有的互联网公司养得起算法部门,只有大型互联网公司有,算法部门类似于药品研发部门
4.二分法是什么?
定义:二分法是算法里面的最简单的算法
要求:待查找的数据集必须有序;待查找的的数据不能在开头或者结尾出现
原理:不断的对数数据集做二分切割
缺陷:针对开头结尾 查找效率很低
5.常见的算法原理以及伪代码
二分法 冒泡 快拍 插入 地推 桶排 数据结构(链表 约瑟夫问题 如何判断链表是否成环)
6.二分法使用案例
# 现在有个需求:查找列表中的某个数
l1 = [21, 76, 84, 91, 122, 132, 231, 334, 665,736, 873, 927, 987, 999]
# 方式1:for 循环 ,次数比较多
# 方式2:二分法 不断地对数据集进行二分切割
# 首先定义我们想要的查找的数据值
target_num = 873
def get_middle(l1, target_num):
# 添加一个结束条件
if len(l1) == 0:
print('很抱歉 没有找到')
return
# 1.获取列表中间的索引值
middle_index = len(l1) // 2
print(middle_index)
# 2.比较目标数据值与中间索引值的大小
if target_num > l1[middle_index]:
# 切片保留列表右边的一半
right_l1 = l1[middle_index +1:]
print(right_l1)
# 针对右边一半的列表继续二分并判断 >>>: 感觉要用递归函数
return get_middle(right_l1, target_num)
elif target_num < l1[middle_index]:
# 切片保留列表左边的一半
left_l1 = l1[:middle_index]
print(left_l1)
# 针对左边一半的列表继续二分并判断 >>>: 感觉要用递归函数
return get_middle(left_l1, target_num)
else:
print('恭喜你找到了')
# get_middle(l1, 873)
# get_middle(l1, 111)
# get_middle(l1, 21)
三元表达式
1.语法结构:
# 数据值1 if 条件 else 数据值2
"""
条件成立立即使用数据值1否则使用数据值2
应用场景:二选一
尽量不要嵌套使用
"""
# 简化步骤:代码简单并且只有一行那么就可以直接在冒号后面编写
# name = 'almira'
# if name == 'almira':print('美女')
# else:print('丑八怪')
# 三元表达式
# res = '美女' if name == 'almira' else '丑八怪'
# print(res)
# res = '美女' if name == 'almira' else '学生' if 1 ==2 else 'hahaha'
# print(res)
is_free = input('电影是否收费>>>:').strip()
rse = '收费' if is_free == 'y' else '免费'
print(res)
列表生成式
# 需求:列表中所有人的名字后面加上_SB的后缀
# 方案一:for循环
name_list = ['almira', 'lina', 'rudy', 'judy']
new_list = []
for name in name_list:
data = f'{name}_SB'
new_list.append(data)
print(new_list)
# 方案二:列表生成式
new_list = [name + "_SB" for name in name_list]
print(new_list)
字典生成式
s1 = 'beautiful'
for i, j in enumerate(s1, start=100):
print(i,j)
d1 = {i:j for i in enumerate('beautiful')}
print(d1)
集合生成式
res = {i for i in 'beautiful'}
print(res)
元组生成式>>>生成器*****
res = (i + 'sb' for i in 'baby')
print(res)
for i in res:
print(i)
匿名函数
1.定义:没有名字的函数 需要使用关键字lambda
2.语法结构:
lambda 形参:返回值
3.使用场景
lambda a,b:a+b
匿名函数一般不单独使用需要配合其他函数要求使用
常见内置函数
1.map() 映射
l1 = [1, 2, 3, 4, 5, 6, 5]
def func(a):
return a + 1
res = map(lambda x:x+1, l1)
print(list(res))
2.max()/min() 最大/最小值
l1 = [1, 2, 3, 4, 5, 6, 5]
res = max(l1)
print(res)
d1 = {
'almira':20000,
'lida':2122,
'judy':1212,
}
res = max(d1, key=lambda k:d1.get(k))
print(res)
3.reduce 传多个值 返回一个值
from functools import reduce
l1 = [21, 43, 65, 87, 98, 76, 54]
res = reduce(lambda a, b: a + b, l1)
print(res)
标签:内置,name,res,生成式,middle,算法,l1,print
From: https://www.cnblogs.com/almira998/p/16789531.html