首页 > 其他分享 >day14学习内容分享

day14学习内容分享

时间:2022-10-13 20:36:05浏览次数:53  
标签:学习 name res day14 middle 算法 l1 print 分享

今日内容概要

  • 算法简介及而二分法
  • 三元表达式
  • 各种生成式
  • 匿名函数
  • 重要内置函数
  • 常见内置函数

内容详细

算法简介及二分法

算法(概念了解)

  1. 什么是算法
    算法就是解决问题的有效方法 不是所有的算法都很高效 也有不合格的算法
  2. 算法应用场景
    推荐算法(抖音视频推送 淘宝商品推送)
    成像算法(AI相关)......
    几乎涵盖了我们日常生活中的方方面面
  3. 算法的条件
    输入性, 输出性,明确性, 有限性,有效性
  4. 时间复杂度
    O(1)< O(login)<O(n)<O(n^2)<O(n!)
  5. 常见的大O运行时间(n一般为元素的个数):
    • O(logn):对数时间,例如:二分查找
    • O(n): 线性时间,简单查找
    • O(nlogn): 快速排序
    • O(n^2):选择排序
    • O(n!):旅行商问题解决方案##

二分法

二分法是一个高效的算法 用于计算机的查找过程中

1.使用要求
   二分法查找依赖的是顺序结构表,数组
    # 必须是有序的
  查找针对的是有序数据 所以只能用插入、删除操作不频繁,一次性多次查找的场景中
2.二分法的缺陷
   针对开头结尾的数据 查找效率很低
常见算法的原理以及伪代码
"""数据量太小不适合二分查找,与直接遍历相比效率提升不明显。但有一个例外,就是数据之间的比较操作非常费时,比如数组中存储的都是组成长度超过100的字符串。
"""
3.一般要求找到某一个值或一个位置。
二分法代码示例
l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]
# 定义需要查找的数字


def get_middle(l1, targer_num):
    if len(l1) == 0:
        print('没找到')
        return
    # 获取列表中的中间值 //遇到小数 取整
    middle_index = len(l1) // 2
    # 比较目标数据值与中间索引值的大小
    if targer_num > l1[middle_index]:
        # 切片保留中间值右边的一半
        right_l1 = l1[middle_index+1:]   
        print(right_l1)
        # 针对右边一半的列表继续二分并判断
        return get_middle(right_l1, targer_num)
    elif targer_num < l1[middle_index]:
        # 切片左边一半的列表继续二分并判断
        left_l1 = l1[:middle_index]
        print(left_l1)
        return get_middle(left_l1, targer_num)
    else:
        print('恭喜你找到了')


get_middle(l1, 754)

三元表达式

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

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

当结果是二选一的情况下 使用三元表达式比较简便

不推荐多个三元表达式嵌套
"""

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

给所有列表的人名的后面加上_NB的后缀
# new_list = []
# for name in namelist:
#     data = f'{name}_nb'
#     new_list.append(data)
# print(new_list)

new_list = [name + '_nb' for name in namelist]
print(new_list)

# 复杂情况
new_list = ['大佬' if name == 'wei' else '小赤佬' for name in namelist if name != 'jason']  
print(new_list)
# 先看for循环 执行后面的 再看前面
  1. 列表生成式

    先看for循环 每次for循环之后再看for关键字前面的操作

  2. 字典生成式
    image

    s1 = 'hello world'
    for i, j in enumerate(s1):  # start= 代表从哪里开始
        print(i, j)
    d1 = {i: j for i, j in enumerate('hello')}
    print(d1)   # {0: 'h', 1: 'e', 2: 'l', 3: 'l', 4: 'o'}
    
  3. 集合生成式

    res = {i for i in 'hello'}
    print(res)   # {'l', 'e', 'h', 'o'}
    

匿名函数

没有名字的函数 需要使用关键字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, 3, 4, 5, 6]

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=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,day14,middle,算法,l1,print,分享
From: https://www.cnblogs.com/wei0919/p/16788909.html

相关文章

  • Python 深度学习目标检测评价指标
    目标检测评价指标:准确率(Accuracy),混淆矩阵(ConfusionMatrix),精确率(Precision),召回率(Recall),平均正确率(AP),meanAveragePrecision(mAP),交除并(IoU),ROC+AUC,非极大值抑制(NMS)。假......
  • 【杂谈】超过12个,150页深度学习开源框架指导手册与GitHub项目,初学CV你值得拥有...
    之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息。开源框架背景现如今开源生态非常完善,深度学习相关的开源框架......
  • 【杂谈】如何让2020年秋招CV项目能力更加硬核,可深入学习有三秋季划4大领域32个方向
    为了让大家在深度学习与计算机视觉方向上掌握更多硬核的项目能力,以便应对秋季招聘,有三AI秋季划准备了4个小组,每一个小组有8个方向,供大家深入学习。当你在某一个领域里做到极......
  • 2022-10-13学习内容
    1.ImageView1.1activity_image_scale.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"an......
  • GD32固件库学习(二)—时钟配置
    1.背景利用stm32编程的时候,会涉及到时钟树的配置,根据硬件设计中使用的外部晶振频率来配置,GD32的时钟配置只能通过配置代码实现。2.GD32F4时钟树其中红圈部分是需要关注......
  • 《CUDA C 编程指南》学习笔记
    CUDA是什么?  CUDA(ComputeUnifiedDeviceArchitecture),是显卡厂商NVIDIA推出的运算平台。是一种通用并行计算架构,该架构使GPU能够解决复杂的计算问题。说白了就是我......
  • uniGUI学习之UniChart图表(57)
    uniGUI学习之UniChart图表(57) 效果图:双击新增数据序列:  选择图表类型:   注意数据在设置时有效......
  • SpringMvc第一天学习 restful 风格即其中的一些配置及其注解
    在先知道springMVC之前我们先了解一下MVC模式MVC模式是表现层的一种设计模式M代表着模型(model)V代表着视图(View)C代表着控制器(controller)使用MVC的目的是将M和V......
  • Java并发编程学习5-对象的组合
    对象的组合前面的博文,我们已经了解了关于线程安全和同步的一些基础知识。本篇博文将介绍一些线程安全的组合模式,来帮助我们确保使用这些模式开发的程序是线程安全的。1.......
  • 入门学习Java必须明确的几点
    在现在对于任何人来说,学一个东西从入门到精通都是需要有一个过程的,我们才能慢慢的掌握。同样学Java也是如此,学到精通必然会得到一份高薪的工作。所以对于任何一个零基础小白......