• 隐匿函数,二分法 冒泡排序


    一,lambda匿名函数
     1.语法  函数名=lambda 参数:返回值   

        a=lambda i:i**2
        print(a(2))

     2.不能用于复杂的函数

    二.sorted()排序函数

     1.语法     sorted(可迭代对象(iterable),key=函数,reserve=false(默认值))

    lst=[
    {"id":1,"name":"李金晓","age":25},
    {"id":2,"name":"老丁","age":23},
    {"id":3,"name":"程程","age":254},
    {"id":4,"name":"王总","age":255},
    {"id":5,"name":"付凌波","age":215}
    ]
    a=sorted(lst,key=lambda dic:dic["age"])
    print(a)

    三.filter()筛选函数

     1.语法   filter(函数,可迭代的对象)

     2.第一个参数是函数,将第二个参数中的每一个元素都传给函数,函数如果反回True,留下该元素.

    lst=[
    {"id":1,"name":"李金晓","age":25},
    {"id":2,"name":"老丁","age":23},
    {"id":3,"name":"程程","age":254},
    {"id":4,"name":"王总","age":255},
    {"id":5,"name":"付凌波","age":215}
    ]
    a= filter(lambda dic:dic["age"]>40,lst)
    print(a)
    print(list(a))

    四.map()映射函数

     1.语法    map(函数,可迭代对象)

     2.把可迭代对象中的每一个元素传递给前面的函数进行处理

    lst=[1,24,3,5,6,7]
    a=map(lambda i:i**2,lst)
    print(a)
    print(list(a))

    五.递归

      1.语法

        def func()

          func()

        fun()

      2.

    lst = [22, 33, 44, 55, 66, 77, 88, 99, 101, 238, 345, 456, 567, 678, 789]
    def func(left,right,n):
    if left<=right:
    middle=(left+right)//2
    if n>lst[middle]:
    left=middle+1
    elif n<lst[middle]:
    right=middle-1
    else:
    return middle
    return func(left,right,n)
    else:
    return -1
    print(func(0,len(lst),101))

    六.二分法查找

    1.查找的序列必须输有序序列.

        1.普通方法

    n=int(input("请输入数字"))
    lst = [22, 33, 44, 55, 66, 77, 88, 99, 101, 238, 345, 456, 567, 678, 789]
    left=0
    right=len(lst)-1

    while left<=right:
    middle=(left+right)//2
    if n>lst[middle]:
    left=middle+1
    elif n<lst[middle]:
    right=middle-1
    else:
    print("存在,位置:"+str(middle))
    break
    else:
    print("不存在")

    七 冒泡排序
    # 2. 给出一个纯数字列表. 请对列表进行排序(升级题).
    # 思路:
    # 1. 完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
    # 2. 循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大. 则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.
    # 3. 想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端. 以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表.
    lst=[12,53,11,23,66,44,2,13]
    for a in range(len(lst)):
        i=0
        while i <len(lst)-1:
            if lst[i]>lst[i+1]:
                lst[i],lst[i+1]=lst[i+1],lst[i]
            i=i+1
    print(lst)
    #
    View Code
  • 相关阅读:
    CF700E Cool Slogans
    [NOI2018]你的名字
    [CTSC2012]熟悉的文章
    CF666E Forensic Examination
    [BZOJ4310]跳蚤
    CF1063F String Journey
    [BZOJ3277]串/CF204E Little Elephant and Strings
    CF123D String
    使用ActiveReports for .net 进行报表开发之交叉报表(转)
    使用ActiveReport for .net 进行报表开发(一)(转自Cure The Last Day Of Summer)
  • 原文地址:https://www.cnblogs.com/hu13/p/9342106.html
Copyright © 2020-2023  润新知