zoukankan      html  css  js  c++  java
  • day14 内置函数2

    lambda  匿名函数
    参数: 返回值
    ret=lambda a,b:a+b
    print(ret(188,99))

    sorted() 排序
    sorted(iterable, key=func, reverse=True/False)
    # 可迭代对象, 函数 ,返回值反序(True),正序(False)
    把可迭代对象的每一项传递给函数,函数返回一个数字,再根据这个数字排序
    lst = [{"id": 1, "name": 'alex', "age": 18},
    {"id": 2, "name": 'wusir', "age": 16},
    {"id": 3, "name": 'taibai', "age": 17}]
    l2=sorted(lst,key=lambda dic:dic["age"])


    filter() 筛选
    filter(func, Iterable)
    把可迭代对象中每一项元素拿出来 放在func中运行,返回Ture/False.根据返回的True/False
    来决定这个数据是否保留
    lst=[23,28,15,27,24]
    筛选出大于18并且为而偶数的
    f=filter(lambda age:age>18 and age%2==0,lst)
    print(sorted(f))

    map( ) 映射
    map(func,Iterable)
    把可迭代对象中的每一项元素拿出来,放到func中运行,返回数据就是结果
    计算两个列表相同位置的数据的和
    lst1 = [1, 2, 3, 4, 5]
    lst2 = [2, 4, 6, 8, 10]
    print(list(map(lambda x, y: x + y , lst1, lst2)))

    递归:
    def func():
    print()
    func() #递归入口
    func()
    用递归实现1-100
    import os
    sys.setrecursionlimit(5000) #设置递归的最大深度,一般不要修改

    def func(i):
    print(i)
    func(i+1)
    func(1) #递归深度:1000 但是到不了1000, 997-998

    用递归遍历文件夹和文件:
    import os
    def func(file_path,count):
    lst=os.listdir(file_path)
    for file in lst:
    full_path=os.path.join(file_path,file)
    if os.path.isdir(full_path):
    print(" "*count,file)
    func(full_path,count+1)
    else:
    print(" "*count,file)
    else:
    return
    func("文件夹",0)

    二分法:
    查找效率很高:
    缺点:有序序列
    lst=[1,8,15,6,7,9,5,1,5,4,9,4,25,26,21,24,20,28,50,81,87,56,64,32,]
    lst1=sorted(lst)
    print(lst1)
    n=int(input("请输入一个数字:"))
    def func(n,lst1,left,right):
    if left<right:
    mid=(left+right)//2
    if n>lst[mid]:
    left=mid+1
    if n<lst[mid]:
    right=mid-1
    else:
    return True
    return func(n,lst1,left,right)
    else:
    return False
    lst1=[1, 1, 4, 4, 5, 5, 6, 7, 8, 9, 9, 15, 20, 21, 24, 25, 26, 28, 32, 50, 56, 64, 81, 87]
    ret=func(87,lst1,0,len(lst1)-1)
    print(ret)

    方法二:
    def func(n,lst1,):
    left=0
    right=len(lst1)-1
    if left<right:
    mid = (left + right) // 2
    if n>lst[mid]:
    new_lst=lst[mid+1:]
    return func(n,new_lst)
    if n<lst[mid]:
    new_lst=lst[:mid]
    return func(n, new_lst)
    else:
    return True
    else:
    return False
    lst1=[1, 1, 4, 4, 5, 5, 6, 7, 8, 9, 9, 15, 20, 21, 24, 25, 26, 28, 32, 50, 56, 64, 81, 87]
    ret=func(87,lst1,0,len(lst1)-1)
    print(ret)
  • 相关阅读:
    JAVA中如何正确的用String转Date
    Windows搭建测试RabbitMq遇到的问题
    使用mysql innodb 使用5.7的json类型遇到的坑和解决办法
    Eclipse快捷键 10个最有用的快捷键
    python数据类型:序列(字符串,元组,列表,字典)
    mysql建表以及列属性
    mysql中的union用法以及子查询综合应用
    一道很好的mysql面试练习题,having综合应用
    mysql常用语句练习-基于ecshop2.7.3数据库(1)
    自定义MVC框架之工具类-模型类
  • 原文地址:https://www.cnblogs.com/litieshuai/p/9682716.html
Copyright © 2011-2022 走看看