一.lambda匿名函数
定义:为了解决一些简单的需求而设计的一句话函数
例子:计算n的n次方
 def func(n):#正常的写法
return n**2
print(func(10)) # f=lambda n:n**2
print(f(10)) #
这里的lambda小时的是匿名函数,不需要用def来声明,一句话就可以声明出一个函数

语法:
函数名=lambda 参数:返回值 注意:
  1.函数的参数可以有多个,多个参数之间用逗号隔开,多个返回值也需要用逗号隔开,并且需要用小括号括起来
  2.匿名函数不管多复杂,只能写一行
  3.返回值和正常函数一样,可以是任意数据类型 匿名函数并不是说一定没有名字,这里前面的变量就可以看做函数名,说他匿名的原因是我们通过__name__查看的时候统一都叫lambda
__name__的使用方法:__name__在这里用的看起来没有多大的作用,实际上在一个大的文件中,函数可能被多次调用传递,这时只能通过__name__来查看
 def func(n):
return n**2
print(func(10)) #
print(func.__name__) f=lambda n:n**2
print(f(10))
print(f.__name__) #<lambda>
匿名函数也可以用*args()和**args():
 f=lambda *args:max(args)
print(f(1,2,3,4,55,9,2,1)) #
二.sorted() 排序函数,内置函数提供的一个供可迭代对象排序的通用的方案
  语法:sorted(iterable,key==none,reverse=false)
  key:排序规则,在sorted的内部,会将可跌倒对象的每一个元素传递给这个函数的形参,根据函数运算的结果进行排序
  reverse:是否倒叙,默认是False,不是倒叙即正序,true是正序
 lst2=sorted(lis)  #原列表不会改变,返回的是一个新列表
print(lst2) #[1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 8, 55]
★★★★★★★★★★★★★★★★★★★★★★内置函数一般不会改变原对象,会产生并返回一个新的对象

对字典排序
 dic={1:'啊',2:'想',3:'睡觉',4:'不能睡'}
dic1=sorted(dic)
print(dic1) #[1, 2, 3, 4] 返回的是排序后的 key
根据字符串的长度排序
 lis=['杀鸡取卵','杀鸡给猴看','杀人如麻,咦,吓人','杀气腾腾,阔怕']
print(sorted(lis,key=lambda el:len(el)))
 dic=[
{'name':'汪峰','age':20},
{'name':'章子怡','age':18},
{'name':'美丽','age':13}
]
dic1=sorted(dic,key=lambda el:el['age'],reverse=True)
print(dic1) #[{'name': '汪峰', 'age': 20}, {'name': '章子怡', 'age': 18}, {'name': '美丽', 'age': 13}]
三.filter()筛选函数
  语法:filter(function,iterable)
  function:用来筛选的函数,在filter中自动的会吧iterable中的每一个元素传给function,然后根据function返回的true或False来判断是否保留此项数据
  iterable:可迭代对象
 lis=[1,2,3,4,5,5,66,98,55,15,20]
lis1=filter(lambda el:el%2==0,lis) #符合函数的内容就是true,留下,不符合函数的内容就是False,筛掉
print(lis1) #<filter object at 0x000002B514A08860> #返回的是内存地址
print(list(lis1)) #[2, 4, 66, 98, 20] lis=['周冬雨','李易峰','周杰伦','李连杰','李小龙']
ll=filter(lambda el :el[0]=='周',lis)
print(list(ll)) #['周冬雨', '周杰伦'] dic=[
{'name':'汪峰','age':20},
{'name':'章子怡','age':18},
{'name':'美丽','age':13}
]
baobao=filter(lambda el:el['age']<15,dic)
print(list(baobao)) #[{'name': '美丽', 'age': 13}]
四.map():映射函数
  语法:map(function,iterable) 将列表中的每一个元素都践行function操作,返回得到的列表的地址
 def func(e):
return e*e
mp=map(func,[1,2,3,4])
print(list(mp)) #[1, 4, 9, 16] lis=[1,2,3,4,5,6]
mp=map(lambda el :el**2,lis)
print(list(mp)) #[1, 4, 9, 16, 25, 36] 计算两个列表中相同位置的数据的和
lis=[1,2,3,4,5,6]
# lis2=[6,5,4,3,2,1]
# mp=map(lambda el1, el2 :el1+el2 ,lis,lis2)
# print(list(mp)) #[7, 7, 7, 7, 7, 7] map()也存在水桶效应
lis=[1,2,3]
lis2=[6,5,4,3,2,1]
mp=map(lambda el1, el2 :el1+el2 ,lis,lis2)
print(list(mp)) #[7, 7, 7]
分而治之:一个人处理一个量特别大的数据太慢,而且耗内存,所以假设这个人找了五个人来完成,
但是五个人的工作量依旧很大,所以这五个人每个人又找了十个人......一次下去直达工作量合适
lis=[1,2,4,5,5,8,6,6,5,5,5,6,6,5,55,5,9,5,5,44,4,8,56,98,5654,654565,65,65,56,5,6,5,456,48,9,89,8,98,56]
mp = map ( func1 , map ( func2 , map ( func3 , lis ) ) )
func3的目的是将这个这个大工作量的list切片成五份
func2的目的是将这五份中的每一份又切片成十份
func3的目的是将一共的50份每份都做映射处理,得到想要的结果
print(list(mp))
五.递归:在函数中调用函数本身就是递归
 i=1
def func(i):
print(i)
print('我是专业的!')
i+=1
func(i)
func(i)
我是专业的!
995
我是专业的!
996
我是专业的!
997
我是专业的!
998 #在python中递归的最大深度到998,官方的最大深度是1000,但是在这之前会报错
递归的作用:可以使用递归来便利各种树形结构,比如文件夹系统,可以使用递归便利一个文件夹中的所有文件
 import os  #引入os模块
def func(filepath,n): #failpath是要打开的文件的路径 n用来控制文件或文件夹前有几个tab键,以形成层次
files=os.listdir(filepath) #os模块中的方法,获取当前文件夹中的所有文件名
for fi in files: #将所有的文件名遍历
fi_d=os.path.join(filepath,fi) #引用os模块中的方法,将e:/python和文件名连在一起,组成一个新的路径
if os.path.isdir(fi_d): #判断该路径下的文件是不是文件夹
print('\t'*n+fi+':') #前面加指定个数的tab键,文件名,冒号
func(fi_d,n+1) #继续调用func函数
else:
print('\t'*n+fi) #直接打印文件名
func('e:/python',0)
六.二分法查找:
  二分法查找,每次能够 排除掉一半的数据,查找的效率非常高,但是有一定的局限性,必须是有序序列才可以使用二分法查找
判断n是否在lst中,如果存在返回n所在位置的索引
普通版本二分法
 lst=[11,22,33,44,55,66,77,88,99,123,145,156,178,189,215,246,287,298,568,687,789,890,960]
n=246
left=0
right=len(lst)-1
middle=(left+right)//2
while left<=right:
if n<lst[middle]:
right=middle-1
middle = (left + right) // 2
elif n>lst[middle]:
left=middle+1
middle = (left + right) // 2
elif n==lst[middle]:
print('找到了',middle)
break
else:
print('没找到')
递归版本二分法
 lst=[11,22,33,44,55,66,77,88,99,123,145,156,178,189,215,246,287,298,568,687,789,890,960]
def func(n,left,right):
if left <=right:
middle=(left+right)//2
if n<lst[middle]:
right=middle-1
return func(n, left, right)
elif n>lst[middle]:
left=middle+1
return func(n, left, right)
elif n==lst[middle]:
print('找到了')
return middle #这个位置返回的值返回的是给调用他的函数,而不是直接返回给第一个func
else:
print('没找到')
return -1
ret=func(78,0,len(lst)-1)
print(ret)

python中的内置函数(2)的更多相关文章

  1. python中的内置函数,递归,递归文件显示(二),二分法

    1.部分内置函数 repr()显示出字符串的官方表示形式,返回一个对象的string形式 # repr 就是原封不动的输出, 引号和转义字符都不起作用 print(repr('大家好,\n \t我叫周 ...

  2. python中的内置函数(一), lambda, filter, map

    https://www.processon.com/view/link/5c10da0ce4b099ae3e137bf6 1.内置函数 内置函数就是python中提供的,可以直接拿来用的函数,比如pr ...

  3. python中一些内置函数实例

    lambda表达式 简单函数可用lambda表达式 1. def f1() return(123) r1=f1() print() 2. f2=lambda:123 r2=f2() print() 以 ...

  4. python中的内置函数(一)

    内置函数:内置函数就是python提供的,可以拿来直接用的函数 作用域相关 locals():返回当前作用域中的名字globals():返回全局作用域中的内容 def func(): print('我 ...

  5. 2018.8.14 python中的内置函数(68个)

    主要内容: python中68个内置函数的功能及使用方法

  6. python学习之【第十篇】:Python中的内置函数

    1.前言 内置函数,就是Python内部预先定义好的函数,可以直接使用,Python中内置函数有以下这么多个: 2.map() 描述: map() 会根据提供的函数对指定序列做映射.第一个参数 fun ...

  7. Python中max()内置函数使用(list)

    在学习完列表和元组的基础知识后,做到一个题: 求出列表中频次出现最多的元素. 学习到了python内置函数max的用法 其参数key的用法 匿名函数lamda的用法 python内置函数max() m ...

  8. python中常用内置函数和关键词

    Python 常用内置函数如下: Python 解释器内置了很多函数和类型,您可以在任何时候使用它们.以下按字母表顺序列出它们. 1. abs()函数 返回数字的绝对值. print( abs(-45 ...

  9. Python中的内置函数__init__()的理解

    有点意思,本来我是学习java的.总所周知,java也有构造函数,而python在面向对象的概念中,也有构造函数.它就是 __init__(self) 方法. 其实类似于__init__()这种方法, ...

随机推荐

  1. Arcgis api for javascript学习笔记-控制地图缩放比例尺范围(3.2X版本与4.6版本)

    Ⅰ. 在3.X版本中,设置Map对象的 "maxScale" 和 "minScale" 属性 <!DOCTYPE html> <html> ...

  2. Android经常使用UI包裹 - EditText

    EditText的信息接受用户输入是最重要的Android UI包裹,您可以使用EditText.getText()获取它的文本内容. 实例:EditTextDemo 执行效果: watermark/ ...

  3. WPF 实现繁花曲线

    原文:WPF 实现繁花曲线 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/nihang1234/article/details/83346919 X ...

  4. NoSQL Manager for MongoDB 破解

    删除这两个地方的东西就好了 运行 -->regedit HKEY_CURRENT_USER\Software\NoSQL Manager Group 删除该文件夹 C:\ProgramData\ ...

  5. Android4.0图库Gallery2代码分析(一) 程序整体结构

    Android4.0图库Gallery2代码分析(一) 程序整体结构 Gallery2的用例图分析:Gallery2主要功能是实现本地存储器.MTP存储器和网络存储器中媒体(图像和视频)的浏览.显示和 ...

  6. UWP 扩展/自定义标题栏的方法,一些概念和一些注意事项

    原文 UWP 扩展/自定义标题栏的方法,一些概念和一些注意事项 在 Windows 10 的前几个版本中将页面内容扩展到标题栏上还算简单,主要是没什么坑.直到一些新控件的引入和一些外观设计趋势变化之后 ...

  7. 各个版本 Windows 10 系统中自带的 .NET Framework 版本

    原文各个版本 Windows 10 系统中自带的 .NET Framework 版本 Windows 名称 Windows 版本 自带的 .NET Framework 版本 Windows 10 Oc ...

  8. cefsharp 与webbrowser简单对比概述

    原文:cefsharp 与webbrowser简单对比概述 有个项目需要做个简单浏览器,从网上了解到几个相关的组件有winform自带的IE内核的WebBrowser,有第三方组件谷歌内核的webki ...

  9. Matlab随笔之判别分析

    原文:Matlab随笔之判别分析 从概率论角度,判别分析是根据所给样本数据,对所给的未分类数据进行分类. 如下表,已知有t个样本数据,每个数据关于n个量化特征有一个值,又已知该样本数据的分类,据此,求 ...

  10. Nginx http filter异常排查

    问题: 访问异常 root@cloud:/usr/local/nginx# curl -i http://localhost/test.html curl: (52) Empty reply from ...