首页 > 编程语言 >算法、表达式与匿名函数

算法、表达式与匿名函数

时间:2022-10-13 20:58:51浏览次数:49  
标签:name res list 算法 middle 匿名 l1 print 表达式

算法简介

1.什么是算法
	算法就是解决问题的有效方法 不是所有的算法都很高效也有不合格的算法
2.算法的应用场景
	推荐算法(抖音视频推送 淘宝商品推送)
    成像算法(AI相关)....
    几乎涵盖了我们日常生活中的方方面面
3.算法工程师要求
	待遇好,要求高

二分法

1.什么是二分法
	是算法中最简单的算法 甚至称不上是算法

"""
二分法使用要求
	待查找的数据集必须有序
二分法的缺陷
	针对开头结尾的数据 查找效率低
常见的算法原理以及伪代码
	二分法、冒泡、快拍、插入、堆排、桶排、数据结构(链表 约瑟夫问题 如何链表是否成环)
"""

l1=[12,34,45,62,73,84,99,123,321,415,543,654,754,867,934]
# 定义我们想要查找的数据值
# target_num = 415

def get_middle(l1,target_num):
    # 添加一个结束条件
    if len(l1) == 0:
        print('很抱歉 没找到')
        return
    # 1.获取列表中间索引值
    middle_index = len(l1)//2
    # 2.比较目标数据值与中间索引值的大小
    if target_num > l1[middle_index]:
        # 3.切片保留列表右边一半
        right_l1 = l1[middle_index + 1:]
        print(right_l1)
        # 4.针对右边一半的列表继续二分并判断 >>>: 感觉要用递归函数
        return  get_middle(right_l1,target_num)
    elif target_num < l1[middle_index]:
        # 5.切片保留列表左边一半
        left_l1 = l1[:middle_index]
        print(left_l1)
        # 6.针对左边一半的列表继续二分并判断 >>>: 感觉要用递归函数
        return get_middle(left_l1,target_num)
    else:
        print(l1[middle_index])

#get_middle(l1,99)
#get_middle(l1,415)

三元表达式

# 简化步骤1:代码简单并且只有一行 那么可以直接在冒号后边编写
name = 'moon'
# if name == 'moon':print('老师')
# else:print('学生')

# 三元表达式
res = '老师' if name == 'jason' else '学生'
print(res)
"""
数据值1 if 条件 else 数据值2
条件成立则使用数据值1 条件不成立则使用数据值2

当结果是二选一的情况下 使用三元表达式较为简便
并且不推荐多个三元表达式嵌套
"""

各种生成式/表达式/推导式

name_list = ['jason','kevin','tony','jerry']
#给列表中所有人名后面加上_NB的后缀

#for循环
new_list = []
for name in name_list:
    data = f'{name}_NB'
    new_list.append(data)
print(new_list)
列表生成式
name_list = ['jason','kevin','tony','jerry']

#先看for循环 每次for循环之后再看for关键字前面的操作
new_list = [name + "_NB" for name in name_list]
print(new_list)
# ['jason_NB', 'kevin_NB', 'tony_NB', 'jerry_NB']

#复杂情况
new_list = [name + "_NB" for name in name_list if 	name =='jason']
print(new_list)
# ['jason_NB']

new_list = ['大佬' if name == 'jason' else '小赤佬'
for name in name_list if name != 'jack']
print(new_list)
# ['大佬', '小赤佬', '小赤佬', '小赤佬']
字典生成式
s1 = 'hello'
for i,j in enumerate(s1,start=0):
    print(i,j)
  #0 h
  #1 e
  #2 l
  #3 l
  #4 o 
d1 = {i: j for i, j in enumerate('hello')}
print(d1)
# {0: 'h', 1: 'e', 2: 'l', 3: 'l', 4: 'o'}
集合生成式
res = {i for i in 'hello'}
print(res)
# {'h', 'o', 'e', 'l'}
元组生成式>>>:没有元组生成式 下列的结果是生成器(后面会讲)
res = (i+'SB' for i in 'hello')
print(res)
for i in res:
    print(i)
	# hSB
	# eSB
	# lSB
	# lSB
	# oSB

匿名函数

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

常见内置函数

1.map()	映射
    l1 = [1, 2, 3, 4, 5]
    # def func(a):
    #     return a + 1
    res = map(lambda x:x+1, l1)
    print(list(res))
    
2.max()\min() 比较求最大值\最小值
	l1 = [11, 22, 33, 44]
 	res = max(l1)
    
	d1 = {
    'zj': 100,
    'jason': 8888,
    'berk': 99999999,
    'oscar': 1
	}
    def func(a):
        return d1.get(a)
    # res = max(d1, key=lambda k: d1.get(k))
    res = max(d1, key=func)
    print(res)
3.reduce	
	 # reduce  传多个值 返回一个值
    from functools import reduce
    l1 = [11, 22, 33, 44, 55, 66, 77, 88]
    res = reduce(lambda a, b: a * b, l1)
    print(res)
    

标签:name,res,list,算法,middle,匿名,l1,print,表达式
From: https://www.cnblogs.com/super-xz/p/16789604.html

相关文章

  • 二分法、三元表达式及匿名函数
    二分法、三元表达式及匿名函数目录二分法、三元表达式及匿名函数一、算法简介及二分法二、三元表达式三、各种生成式1.列表生成式2.字典生成式3.集合生成式4.元组四、匿名......
  • 算法 生成式 函数内置
    今日内容概要算法简介及二分法三元表达式各种生成制匿名函数重要内置函数常见内置函数算法简介及二分法1.什么算法? 解决问题的有效方法,不是所有的算法都是高效......
  • 算法、三元表达式、匿名函数
    算法、三元表达式、匿名函数目录算法、三元表达式、匿名函数一、算法简介1、算法的概念2、算法的应用场景二、二分法1、二分法查找思路2、二分法使用要求三、三元表达式四......
  • 【算法】时间频度与时间复杂度、归并排序、StringBuffer和StringBuilder详解!
    算法中的时间频度与时间复杂度时间频度一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度......
  • 算法
    今日内容概要作业讲解算法简介及二分法三元表达式各种生成式匿名函数重要内置函数常见内置函数今日内容详细算法简介及二分法1.什么是算法算法就是解......
  • C++ 使用栈求解中缀、后缀表达式的值
    1.前言表达式求值对于有知识积累的你而言,可以通过认知,按运算符的优先级进行先后运算。但对计算机而言,表达式仅是一串普通的信息而已,需要通过编码的方式告诉计算机运算法......
  • 算法简介与函数表达式跟内置函数
    今日内容总结算法简介及二分法1.什么是算法算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机......
  • 算法、二分法、函数
    目录算法简介及二分法三元表达式各种生成式/表达式/推导式匿名函数内置函数作业算法简介及二分法1.什么是算法算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解......
  • 算法简介及二分法
    目录算法简介及二分法三元表达式各种生成式/表达式/推导式匿名函数常见内置函数算法简介及二分法1.什么是算法: 算法就是解决问题的有效方法不是所有的算法都很高效也......
  • 算法简介及二分法,三元表达式,各种生成式,匿名函数,常见内置函数
    目录算法简介及二分法,三元表达式,各种生成式,匿名函数,常见内置函数今日内容概要今日内容详细算法简介及二分法三元表达式各种生成式/表达式/推导式匿名函数常见内置函数算法......