一、匿名函数

形式:

lambda 形参:返回值

lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数。匿名函数不是说一定没名字,而是他们的名字统一称为“lambda”,可以用__name__查看

注意:

1. 函数的参数可以有多个. 多个参数之间用逗号隔开

2. 匿名函数不管多复杂. 只能写一行, 且逻辑结束后直接返回数据

3. 返回值和正常的函数一样, 可以是任意数据类型

 #计算n的n次方
f = lambda n : n**n print(f(10))

二、sorted

排序函数,形式  sorted(iterable, key=None, reverse = False)

iterrable :要进行排序的可迭代对象

key:相当于排序规则,在sorted内部会将可迭代对象的每一个元素传递给这个函数,根据函数的运算结果进行排序

reverse: 升序还是降序,False是升序,True是降序

 lst = ["将夜","择天记","斗破苍穹","武动乾坤"]

 s = sorted(lst, key= lambda el : len(el), reverse = False) #按电视剧名的长度排序

 print(s)

三、filter

筛选函数,形式 filter(function , iterable )

function:筛选规则,将iterable的每一个元素传递给这个函数,根据function返回的True或者False来判断是否保留此项数据

llst = ["将夜","择天记","斗破苍穹","武动乾坤"]

s = filter( lambda el : len(el)>3,lst) #按电视剧名的长度排序
for el in s:
print(el) 结果:
斗破苍穹
武动乾坤

四、map

映射函数 形式 map(function , iterable)

function:映射规则,分别取iterable中的每一个元素,传递给函数执行,得到新的数据

 #列表中每个元素的平方组成新列表
lst = [2,4,6,8,10]
num = map(lambda x:x*x,lst) for el in num :
print(el)

五、递归

在函数中调用函数本身,就是递归(自己调用自己)

递归的最大深度是1000,但是一般都取不到

递归关键的是找到递归入口和递归出口

应用:使用递归遍历文件夹系统(递归可以用来遍历各种树形结构)

 def func(path, ceng)
lst = os.listdir(path) # 打开一个文件夹. 获取到文件夹内的所有内容
for el in lst: # 当前文件夹内的所有的文件名(包括文件夹名字)
file_real_path = os.path.join(path, el) # 拼接文件的真实路径
# 判断这个路径是文件还是文件夹
if os.path.isdir(file_real_path):
# 递归的入口
print("\t"*ceng, el)
func(file_real_path,ceng+1) # 重新执行刚才的操作 else: # 不是文件夹, 是文件
# 递归的出口
print("\t"*ceng, el) func("D:/PyCharm/workspace/周作业",0) #调用函数

六、二分法

二分查找:每次能够排除掉一半的数据,查找的效率非常高。 但是局限性比较大, 必须是有序序列才可以使用二分查找。

 #查找列表中是否存在n
lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] #普通查找
def func():
n =input(">>")
for el in lst:
if el == int(n):
return True
else:
return False # print(func()) #判断列表中是否存在n
#二分查找---非递归
n = int(input(">>"))
left = 0 #左边界
right = len(lst)-1 #右边界
while left<=right: #左边界小于等于右边界进入循环
mid = (left+right)//2 #取商的整数
if n < lst[mid]: #判断你的数字和中间数大小
right = mid-1 #右边界往左移
elif n >lst[mid]:
left = mid+1 #左边界往右移
else:
print("找到了")
break
else: # 左边界大于右边界退出循环
print("找不到")
#二分查找---递归
def digui(n,left,right):
if left <= right:
mid = (left +right)//2
if n < lst[mid]:
right = mid -1
elif n > lst[mid]:
left = mid +1
else:
print("找到了")
return True
#digui(n, left, right)
return digui(n, left, right) # 不写return,返回值始终为None
else:
return -1
ret = digui(56,0,len(lst)-1)
print(ret) #二分查找 ----递归(切列表)
def binary_search(lst,n):
left = 0
right = len(lst)-1
if left >right:
print("找不到")
mid = (left + right)//2
if n < lst[mid]:
#binary_search(lst[:mid], n)
return binary_search(lst[:mid],n) # 不写return,返回值会始终为None
elif n > lst[mid]:
#binary_search(lst[mid + 1:], n)
return binary_search(lst[mid+1: ],n)
else:
print("找到了")
return True
ret = binary_search(lst,56)
print(ret)

示例

python记录_day14 内置函数二 迭代 二分法的更多相关文章

  1. 百万年薪python之路 -- 内置函数二 -- 最常用的内置函数

    1.内置函数 1.1 匿名函数 匿名函数,顾名思义就是没有名字的函数(其实是有名字的,就叫lambda),那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话 ...

  2. python基础(16):内置函数(二)

    1. lamda匿名函数 为了解决⼀些简单的需求⽽设计的⼀句话函数 # 计算n的n次⽅ def func(n): return n**n print(func(10)) f = lambda n: n ...

  3. python记录_day13 内置函数

    详细链接:https://www.processon.com/mindmap/5bdbc4bee4b0878bf42089fb

  4. python函数知识六 内置函数二、匿名函数与内置函数三(重要)

    19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...

  5. python学习交流 - 内置函数使用方法和应用举例

    内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...

  6. Python的常用内置函数介绍

    Python的常用内置函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.取绝对值(abs) #!/usr/bin/env python #_*_coding:utf-8_ ...

  7. python---day14( 内置函数二)

    内置函数二一:匿名函数 lambda函数 lambda 表示匿名函数,不需要用def 来申明. 语法: 函数名=lambda 参数:返回值 ----〉 案例:f=lambda n:n*n 例子01: ...

  8. python常用的内置函数哈哈

    python常用的内置函数集合做一个归类用的时候可以查找 abs 返回数字x的绝对值或者x的摸 all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为true,就 ...

  9. python常用的内置函数

    python常用的内置函数集合做一个归类用的时候可以查找- abs 返回数字x的绝对值或者x的摸 - all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为tru ...

随机推荐

  1. List of 3rd Party .NET UI & Reporting Components

    https://www.codeproject.com/Reference/788434/List-of-rd-Party-NET-UI-Reporting-Components Introducti ...

  2. 浅谈IIS 和 asp.net的应用之间的关系

    IIS可以理解为一个web服务器. 用于提供web相关的各种服务. IIS6.0中添加了一个新的功能, application pool. application pool的作用是将运行在同一个ser ...

  3. Docker Engine SDKs and API 的开发1

    Develop with Docker Engine SDKs and API Docker provides an API for interacting with the Docker daemo ...

  4. python时间

    #!/usr/bin/python # -*- coding: utf-8 -*- import sys import time import datetime line="Wed 11/2 ...

  5. HDU 1251 统计难题(字典树模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1251 题意:给出一些单词,然后有多次询问,每次输出以该单词为前缀的单词的数量. 思路: 字典树入门题. #inc ...

  6. UIUseImgWindow

    using System;using UnityEngine;using UnityEngine.UI;using UnityEditor;using System.Collections;using ...

  7. VirtualBox安装Centos6.8出现——E_INVALIDARG (0x80070057)

    VirtualBox使用已有的虚拟硬盘出错: 问题描述:UUID已经存在 Cannot register the hard disk 'E:\system_iso\centos6.8.vdi' {05 ...

  8. Mysql 函数使用记录(一)——DATEDIFF、CONCAT

    当目前为止呢,个人对Mysql的函数没有进行过统一的学习使用,都是用到了再去学习.而近日开始学习Linux了,所以为了防止这段时期结束后,将此阶段期间遇到的Mysql函数遗忘,开始在此对其做一个简单的 ...

  9. 【BZOJ】3142: [Hnoi2013]数列

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3142 12年也有一个组合数学...(这几年的画风啊.... 考虑直接去做:DP? DP+容 ...

  10. windows与linux换行符

    我一次linux上写的脚本,利用vim进行脚本编写,然后下载下来在nodepad++上面打开,在nodepad上面新建了一个文件将原来文件内容复制过去,保存后下载复制文件在linux上面进行运行,发现 ...