Python学习————二分法及匿名函数

一、二分法

算法:是高效解决问题的办法

算法之二分法

需求:有一个按照从小到大顺序排列的数字列表

需要从该数字列表中找到我们想要的那个一个数字

如何做更高效???

nums=[-3,4,7,10,13,21,43,77,89]
find_num=10

nums=[-3,4,13,10,-2,7,89]
nums.sort()
print(nums)

方案一:整体遍历效率太低

or num in nums:
    if num == find_num:
        print(‘find it‘)
        break

方案二:二分法

def binary_search(find_num,列表):
    mid_val=找列表中间的值
    if find_num > mid_val:

接下来的查找应该是在列表的右半部分

? 列表=列表切片右半部分

?

    binary_search(find_num,列表)
    elif find_num < mid_val:

接下来的查找应该是在列表的左半部分

? 列表=列表切片左半部分

?

   binary_search(find_num,列表)
    else:
        print(‘find it‘)

nums=[-3,4,7,10,13,21,43,77,89]
find_num=8
def binary_search(find_num,l):
    print(l)
    if len(l) == 0:
        print(‘找的值不存在‘)
        return
    mid_index=len(l) // 2

?    if find_num > l[mid_index]:

接下来的查找应该是在列表的右半部分

?

  l=l[mid_index+1:]
        binary_search(find_num,l)
    elif find_num < l[mid_index]:

接下来的查找应该是在列表的左半部分

?

 l=l[:mid_index]
        binary_search(find_num,l)
    else:
        print(‘find it‘)

binary_search(find_num,nums)

1、def用于定义有名函数

func=函数的内存地址
def func(x,y):
    return x+y

print(func)

2、lamdab用于定义匿名函数

print(lambda x,y:x+y)

3、调用匿名函数

方式一:

res=(lambda x,y:x+y)(1,2)
print(res)

方式二:

func=lambda x,y:x+y
res=func(1,2)
print(res)

4、匿名用于临时调用一次的场景:更多的是将匿名与其他函数配合使用

编程思想/范式

面向过程的编程思想:

核心是"过程"二字,过程即流程,指的是做事的步骤:先什么、再什么、后干什么

基于该思想编写程序就好比在设计一条流水线

优点:复杂的问题流程化、进而简单化

缺点:扩展性非常差

面向过程的编程思想应用场景解析:

1、不是所有的软件都需要频繁更迭:比如编写脚本

2、即便是一个软件需要频繁更迭,也不并不代表这个软件所有的组成部分都需要一起更迭

原文地址:https://www.cnblogs.com/x945669/p/12578595.html

时间: 2024-11-13 09:59:57

Python学习————二分法及匿名函数的相关文章

Python学习笔记010——匿名函数lambda

1 语法 my_lambda = lambda arg1, arg2 : arg1 + arg2 + 1 arg1.arg2:参数 arg1 + arg2 + 1 :表达式 2 描述 匿名函数不需要return来返回值,表达式本身结果就是返回值. lambda 仅简洁了代码,并不会提高程序运行效率 如果可以用 for...in...if 来完成的,最好不使用匿名函数lambda 使用lambda时,函数内不要包含循环.嵌套:如果存在,则最好使用def函数来完成,这样的代码可读性和复用性均较高 l

python学习之lambda匿名函数

1 Python支持运行时使用“lambda”建立匿名函数(anonymous functions that are not bound to a name). python "lambda"和functional programming语言有区别,但是他非常强大经常拿来和诸如filter(),map(),reduce()等经典概念结合. 以下示例普通函数和匿名函数: 1 In [113]: def normalFun (x): return x**2 2 3 In [114]: pr

Python学习第九课——匿名函数

匿名函数 # 匿名函数 func = lambda x: x + 1 # x表示参数 x+1表示处理逻辑 print(func(10)) # 输出结果为11 # 例:如何将name="hanhan" 改为 hanhan_shuai的形式 # 普通函数写法 name = "hanhan" def change_name(x): return name + '_shuai' res = change_name(name) print(res) # 输出结果 hanhan

python学习笔记(03):函数

默认参数值:   只有在行参表末尾的哪些参数可以有默认参数值,即 def func(a, b=5 )#有效的 def func( a=5,b )#无效的 关键参数: #!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100) #输出: $ pyth

java学习中,匿名函数、构造方法、构造代码块、构造方法中调用构造方法(java 学习中的小记录)

java学习中,匿名函数.构造方法.构造代码块.构造方法中调用构造方法(java 学习中的小记录) 作者:王可利(Star·星星) 匿名函数 匿名对象:没有名字的对象 匿名对象使用的注意点: 1.一般不会用匿名对象给属性赋值,无法获取属性值,每次new 都是一个新的对象. 2.匿名对象永远都不可能是一个对象. 如:person new().name = "星星":是不行的 匿名对象的好处:书写简单. 匿名对象使用的场景: 1.如果一个对象调用一个方法一次的时候,就可以用匿名对象来调用.

Python学习_算数运算函数

记录以grades列表为例,分别定义输出.求和.平均值.方差和标准差函数,并输出相应的值 grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5] #定义输出函数 def print_grades(grades): for grade in grades: print grade #定义求和函数 def grades_sum(grades): total = 0 for grade in grades: total +=

python学习笔记4-内置函数、匿名函数、json处理

print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真 print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真 print(bin(10))#十进制转二进制 print(bool('s'))#把一个对象转换成布尔类型 print(bytearray('abcde',encoding='utf-8'))#把字符串变成一个可修改的bytes print(callable('aa'))#判断传入的对象是否可调用 print(chr(10))#打印

python学习三十三天函数匿名函数lambda用法

python函数匿名函数lambda用法,是在多行语句转换一行语句,有点像三元运算符,只可以表示一些简单运算的,lambda做一些复杂的运算不太可能.分别对比普通函数和匿名函数的区别 1,普通的函数用法 def func(): print('aaa') func() 2,匿名函数的用法 f=lambda x,y:x*y m=f(3,5) print(m) 输出结果 15 匿名比较复杂的用法条件判断,匿名函数一般搭配函数内置函数使用 map() 文章来自(www.96net.com.cn) 原文地

Python 学习笔记 -- 内嵌函数、闭包、匿名函数、高阶函数map、高阶函数filter、高阶函数reduce

1 #------------------------------内嵌函数------------------------------ 2 #内嵌函数就是在函数内部定义函数 3 #实例一 4 print("#------------------------------内嵌函数------------------------------") 5 def funOutOne(): 6 x = 5 7 def funIn(): 8 x = 3 9 print("My funOutO