今日内容总结
算法简介与二分法
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,填写所需要查找的数据)
三元表达式
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']
内置函数 enumerate的用法
s1 = 'hello world'
for i,j in enumerate(s1):
print(i,j)
# enumerate 还可以决定起始的编号enumerate(s1,10)就会从10开始
字典生成式
列表生成式
匿名函数
没有名字的函数 使用关键字 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)
标签:14,res,算法,num,l1,print,name
From: https://www.cnblogs.com/xiaochenxiangchangpang/p/16789450.html