首页 > 其他分享 >10.13

10.13

时间:2022-10-13 18:44:22浏览次数:34  
标签:name res list middle l1 print 10.13

今日内容

1.算法简介及二分法

2.三元表达式

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

4.匿名函数

5.常见内置函数

1.算法简介及二分法

1.算法是解决问题的方法,不是所有的算法都很高效,也有不合格的算法
2.算法应用场景
  推荐算法(抖音视频推送,淘宝商品推送)
  成像算法(AI相关)
   几乎涵盖了我们日常生活的方方面面
3.算法工程师要求   待遇非常好,但是要求也是非常高
4.算法部门
  不是所有的互联网公司都养得起算法部门,只有大型互联网公司才有
5.二分法   是算法中最简单的算法,甚至称不上算法
 二分法使用要求:待查找的数据集必须有序
 二分法的缺陷:针对开头和结尾的数据,查找效率很低
 常见算法的原理以及伪代码
    二分法、冒泡、快拍、插入、堆排、桶排、数据结构(链表、约瑟夫问题、如何链表是否成环)
    
 l1 = [12,21,32,43,56,76,88,98,123,321,453,565,678,754,812,987,1001,1233]
  查找列表中某个数据值
   方式1:for循环,次数多
   发生2:二分法,不断的对数据集做二分切割
    代码实现二分法
    定义我们想要查找的数据集
target_num = 987
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]:
          切片保留列表右边一半
         right_l1 = l1[middle_index]:
         print(right_l1)
           针对右边一半的列表继续二分并判断>>>:感觉要用递归函数
         return get_middle(right_l1,target_num)
    elif target_num < l1[middle_index]:
           切片保留列表左边一半
        left_l1 = l1[:middle_indexx]
        print(left_l1)
           针对左边一半的列表继续二分并判断 >>>:感觉要用递归函数
        return get_middle(left_l1,target_num)
    else:
        print('恭喜你 找到了!!!')
get_middle(l1,987)
get_middle(l1,2000)
get_middle(l1,12)

2.三元表达式

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

数据值1 if 条件 else 数据值2
条件成立则使用数据值1,条件不成立则使用数据值2
当结果是二选一的情况下,使用三元表达式较为简便
并且不推荐多个三元表达式嵌套

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

name_list = ['jason','kevin','oscar','tony','jerry']
给列表中所有人名的后面加上_NB的后缀
for循环
new_list = []
for name in name_list:
    data = f'{name}_NB'
    new_list.append(data)
print(new_list)
列表生成式
先看for循环,每次for循环之后再看for关键字前面的操作
new_list = [name + "_NB" for name in name_list]
print(new_list)
复杂情况
new_list = [name + "_NB" for name in name_list if name =='jason']
print(new_list)
new_list = ['大佬, if name == 'jason' else '小赤佬’ for name in name_list if name !='jack'']
print(new_list)
字典生成式
s1 = 'hello world'
for i,j in enumerate(s1,start=100):
 	print(i,j)
d1 = {i:j for i,j in enumerate(s1,start=100)}:
print(d1)
集合生成式
res = {i for i in 'hello'}
print(res)
元组生成式>>>:没有元组生成式 下列的结果是生成器(后面讲)
res = (i+'SB' for i in 'hello')
print(res)
for i in res:
     print(i)           
            

4.匿名函数

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

5.常见内置函数

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,10.13
From: https://www.cnblogs.com/yueq43/p/16789283.html

相关文章

  • 2022.10.13 CSP2022 模拟赛三
    Source:JOI2018FinalT2-T5绝了会最后一题不会T2,麻了。美术展览显然的事情:在规定\(A\)的值域\([l,r]\)之后,对于所有\(A_i\in[l,r]\),都选进来一定最优。按\(A......
  • 闲话 22.10.13
    闲话压位trie怎么实现?哪天写一个好于是今天卡了一天的常数然后lyin十分钟给切了没什么要写的诶今天哦对了今天中午换起床歌了瑞苹不如新宝岛谁有什么很诡异的题来......
  • 10.13
    学习端口安全技术:即802.1x其目的是为了解决局域网用户的接入认证问题其中认证方式分为两种:1.本地认证2.远程集中认证端口接入控制分为两种:基于端口认证-----------端......
  • 2022.10.13小记
    24岁倒计时84天关于有点浪漫的事截止今日分数-8未来可期,不错不错真不错开心今日穿搭,背带牛仔裤+短上衣,有一点点小暴露,但是我都一直穿着外套。最重要的是冷的有点肚......
  • 2022.10.13实现callable接口
    实现callable接口(了解即可)实现callable接口,需要返回值类型重写call方法,需要抛出异常创建目标对象创建执行服务:ExecutorServiceser=Executor.newFixedThread......
  • mysql运行sql文件报错[ERR] 2006 - MySQL server has gone away [ERR] -- MySQL dump
    原因:在运行数据库脚本文件时报该错,由于mysql对max_allowed_packect 允许最大的数据包的大小有限制解决方法:1.先查看现在允许的最大包大小,单位(字节) select@@max_allow......