博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内置函数, 递归, 二分法
阅读量:6340 次
发布时间:2019-06-22

本文共 2369 字,大约阅读时间需要 7 分钟。

一. lambda()

a = lambda n: n ** 2

a = lambda x, y: (x, y)

a = lambda x, y: x, y            这个需要两个变量名来接收, 把y赋值给第二个变量名

fn = lambda *args: max(args)

lambda有返回值

 

二. sorted()

sorted(iterable, key, reverse)

lst = sorted(lis, key = lambda el: el[:2], reverse = True)

lst = sorted(lis, key = func, reverse = True)            func不加括号

sorted函数会把lis的每一个元素交给key, 然后计算出这个元素的权重, 整个函数按权重进行排序, sorted有返回值

 

三. filter()

filter(function, iteraable)

f = filter(lambda el: int(el[0]) < 5, lst)

print(list(f))

filter函数返回True的都会保留, False都会去除

获取的返回值是一个迭代器

m = map(func1, map(func2, map(func3, lst)))           # 分而治之

m = map(lambda x, y, z: x + y + z, [1,2,3,4,5,6], [1,2,3,4,5], [1,2,3,4])     # 返回的迭代器的元素个数取最短的那个列表的个数

 

四. map()

map(function, iterable)

把可迭代对象中的每一个元素交给前面的函数进行执行, 返回值就是map的处理结果

m = map(lambda el: el ** 2, lst)

print(list(m))

返回的也是迭代器

 

五. repr()

print(repr('你好'))        # '你好'         程序中内部存储的内容, 是给程序员看的

print('你好')       # 你好          给用户看的

print(r'\\你好')       # \\你好          原样输出

 

六. 递归

递归深度默认是1000, 可以改变, 但实际只能到998左右, 看机器好坏, 到了深度会报错

遍历 D:/sylar文件夹, 打印出所有的文件和普通文件的文件名import osdef 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("\t"*n, file,":") # 打印文件名            func(f_d, n + 1)        else:   #  不是文件夹. 普通文件            print("\t"*n, file)func("d:/sylar",0)

  

七. 二分法

核心: 切头去尾取中间, 一次砍一半

两种算法: 常规循环, 递归循环

# 递归来完成二分法lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]def func(n, left, right):    if left <= right: # 边界        print("哈哈")        mid = (left + right)//2        if n > lst[mid]:            left = mid + 1            return func(n, left, right) # 递归  递归的入口        elif n < lst[mid]:            right = mid - 1            # 深坑. 函数的返回值返回给调用者            return func(n, left, right)    # 递归        elif n == lst[mid]:            print("找到了")            return mid            # return  # 通过return返回. 终止递归    else:        print("没有这个数") # 递归的出口        return -1 # 1, 索引+ 2, 什么都不返回, None# 找66, 左边界:0,  右边界是:len(lst) - 1ret = func(66, 0, len(lst) - 1)print(ret) # 不是None

  

时间复杂度, 空间复杂度最低的查找方法

lst1 = [5,6,7,8]lst2 = [0,0,0,0,0,1,1,1,1]     # 个数是lst1中最大的元素加1for el in lst1:               lst2[el] = 1print(lst2[5])

  

  

转载于:https://www.cnblogs.com/NachoLau/p/9483300.html

你可能感兴趣的文章
Ansible自动化运维之YAML、基础元素
查看>>
MSSQL · 最佳实践 · 利用文件组实现冷热数据隔离备份方案
查看>>
前端开发--实战篇之测试框架
查看>>
eyoucm arclist 文档列表
查看>>
$(document).ready(function()
查看>>
Python学习之路——Linux基础之IP地址管理
查看>>
央行特急通知,这下马云、马化腾恐怕真得“亏的坐公交车了”
查看>>
如何恢复回收站被清空的文件?简单图文教程
查看>>
企业wifi安全管家,贴身又暖心的wifi管理系统
查看>>
3500 万美元:MySpace 终于被卖了
查看>>
用mysql-cluster-gpl-7.6.7搭建数据库集群
查看>>
安全与隐私保护兼具优势,声纹识别产业化步伐逐渐加速
查看>>
引流黑科技:抖音群控精准营销,一键引爆流量池技巧!
查看>>
全路径编辑技巧
查看>>
打印九九乘法表
查看>>
DHCP、DNS-window服务器转Linux事宜
查看>>
Deep learning 1.4 作業1
查看>>
Centos7.4 安装 zabbix3.2.0
查看>>
mysql主从复制(一主一从)
查看>>
我的友情链接
查看>>