zoukankan      html  css  js  c++  java
  • 匿名函数、冒泡排序,二分法, 递归

    匿名函数
    lambda 匿名函数  格式 lambda 参数:返回值   函数名统一叫lambda,最多只能写一行
    
    普通的正常的函数
    def func(n):
        return n * n
    lambda匿名函数写法
    a = lambda n : n**2
    print(a(3))
    当有多个返回值时
    
    suiyi = lambda x, y : (1, 2) # 笔试题       返回值有多个要用(),返回值时已元组方式返回的
    print(suiyi)                            #==》<function <lambda> at 0x03713420>
    print(suiyi(250,38))                 #==》(1, 2)
    
    
    递归
    在函数中调用自己,python最大递归层数是1000,不到1000就会提前报错,sys.setrecursionlimit(10000000),可以更改递归最大层数
    
    import sys
    sys.setrecursionlimit(10000000)
    n = 0
    def story():
        global n
        n += 1
        print(n)
        story()
    story()
    遍历 D:/sylar文件夹, 打印出所有的文件和普通文件的文件名
    
    import os
    def func(filepath, n): # d:/sylar/
        # 1,打开这个文件夹
        files = os.listdir(filepath)
        # 2. 拿到每一个文件名
        for file in files: # 文件名
            # 3. 获取到路径
            f_d = os.path.join(filepath, file) # d:/sylar/文件名/
            # 4. 判断是否是文件夹
            if os.path.isdir(f_d):
                    # 5. 如果是文件夹. 继续再来一遍
                    print("	"*n, file,":") # 打印文件名
                    func(f_d, n + 1)#如果是文件夹继续循环调用
            else: # 不是文件夹. 普通文件
                print("	"*n, file)
    
    func("d:/sylar",0)
    
    
    二分法查找
    二分法思想:二分法的序列必须是有序的,从小到大排序,先和中间的比较大小如果比中间的值大,则所取值在右侧,左边值右移,如此循环比较
    
    lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]
    
    def fun(n):
        left = 0
        right = len(lst) - 1
    
        while lst[left] <= lst[right]:
            mid = (left+right) // 2
            if n > lst[mid]:
                left = mid + 1
            if n < lst[mid]:
                right = mid - 1
            if n == lst[mid]:
                print('yes', mid)
                break
        else:
            print('no')
    
    fun(101)

    冒泡排序
    lst = [22, 13, 44, 55, 66, 77, 88, 99, 101 , 8 , 345 , 456 , 57 , 678 , 789]
    
    
    def fun(lst):
        for i in range(len(lst)):
            for i in range(len(lst)-1):
                if lst[i] > lst[i+1]:
                    lst[i], lst[i + 1] = lst[i+1], lst[i]
        return lst
    
    print(fun(lst))
  • 相关阅读:
    冲刺阶段站立会议每天任务7
    冲刺阶段站立会议每天任务6
    冲刺阶段站立会议每天任务5
    冲刺阶段站立会议每天任务4
    《梦断代码》读后感一
    第一次冲刺项目总结
    书店促销问题
    用户需求调研报告
    需求分析
    返回二维数组最大子数组的和(2)
  • 原文地址:https://www.cnblogs.com/Mr-wangxd/p/9482166.html
Copyright © 2011-2022 走看看