首页 > 其他分享 >14

14

时间:2022-10-13 19:56:53浏览次数:53  
标签:14 res 算法 num l1 print name

今日内容总结

算法简介与二分法

1.算法就是解决问题的有效方法 不是所有的算法都很高效也有不合格的算法
2.算法的用于场景:
	成像算法
    推算算法
    几乎覆盖了我们日常生活的方方面面
3.二分法:
	算法中最简单的 甚至不配叫算法
'''
二分法的特点:
1.待查找的数据必须有序
2.数据如果是首位的数据 还不如不用
常见算法的原理以及伪代码:
  二分法,冒泡,快拍,插入,推排,通排,数据结构(链表,约瑟夫问题,如何链表是否成环)
'''
eg:
要找到其中某一个数据  (55)
# 方法一:使用for循环一个一个找
# 方法二:使用二分法
def func(l1,num_1):
    if len(l1) == 0:
        print('很抱歉没找到')
        return
    middle_num = len(l1) // 2    # 获取列表的中间和数据位置
    if num_1>l1[middle_num]:     # 判断中间位置的数据值与索要寻找的数据值比较大小
        right_1 = l1[middle_num+1:]  # 切割列表 舍去不需要的部分
        print(right_1)
        return func(right_1,num_1)
    elif num_1<l1[middle_num]:    
        left_1 = l1[:middle_num]
        print(left_1)
        return func(left_1,num_1)
    else:
        print('找到了')
func(l1,99)
#func(l1,填写所需要查找的数据)

image

三元表达式

1.简化代码:
	如果代码只有一行而且并且比较简单可以将代码写道冒号的后面
    eg:
        name = 'xiaochen'
        if name == 'xiaochen': print(666)
        else: print(111)

2.三元表达式:
	res = '666' if name == 'xiaochen' else '111'
    print(res)
    '''
    使用格式:数据值1 if 条件1 else 数据值2
    条件1成立则使用数据值1 不成立则使用数据值2
    
    如果是二选一结构则可以考虑使用三元表达式来简化代码
    如果选择过多则容易弄错 并且可读性太低 不推荐三元表达式嵌套
    '''

生成式,表达式,推导式

1.列表生成式(最常用)
先看 for循环 每次for循环后再看for循环前面的操作
eg:
l1 = ['a','b','c']
要将这所有的列表加上'-nb'
代码实现:
l1 = [i+'_nb' for i in l1]
print(l1)
难度提升:
l2 = ['xiaochen','jason','cc']
给指定数据加上'_nb'
代码实现:
l2 = [name+'_nb' for name in l2 if name == 'jason']
print(l2)   # ['jason_nb']

image

内置函数 enumerate的用法
s1 = 'hello world'
for i,j in enumerate(s1):
    print(i,j)
# enumerate 还可以决定起始的编号enumerate(s1,10)就会从10开始

image

字典生成式

image

列表生成式

image

匿名函数

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

常见内置函数

1.map()映射
	l1 = [1,2,3,4,5]
    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)
    print(res)  # 44
 '''
    max是获取最大的数据值 如果是字符串的话 就判断首字母的字节(min是获取最小值) 
    a~z:97~122 A~Z:65~97	
 '''
	d1 = {
        'zh':100,
        'jason':8888,
	    'brek':9999,
        'oscar':1       
    }
    def func(a):
        return di.get(a)
    res = max(d1,key=func)
    print(res)   # brek
    '''res = max(d1)
       print(res)     所打印的结果是 zh 因为z所对应的122 是最大
    '''
3.reduce
传入多个值 返回一个值
from functools import reduce
    l1 = [11, 22, 33, 44, 55, 66, 77, 88]
    res = reduce(lambda a, b: a * b, l1)
    print(res)   # l1列表中所有是数据的乘积(8642950081920)

image

标签:14,res,算法,num,l1,print,name
From: https://www.cnblogs.com/xiaochenxiangchangpang/p/16789450.html

相关文章