一、内置函数

1.1、作用域相关

locals() #以字典的类型返回当前位置的全部局部变量。

globals() #以字典的类型返回全部全局变量。

1.2、迭代器生成器相关

range() #可创建一个整数对象,一般用在 for 循环中

next() #内部实际使用了__next__方法,返回迭代器的下一个项目。

iter() #用来生成迭代器(将一个可迭代对象,生成迭代器)同于:__iter__()

1.3、基础数据类型相关

bool() #用于将给定参数转换为布尔类型,如果没有参数,返回 False

int() #用于将一个字符串或数字转换为整型。

float() #用于将整数和字符串转换成浮点数。

list() #将一个可迭代对象转化成列表

tuple() #将一个可迭代对象转化成元祖

dict() #创建一个字典

set() #创建一个集合

str() #转化成字符串

1.4、转换及运算相关

bin() #将十进制转换成二进制并返回。

oct()#将十进制转化成八进制字符串并返回

hex()#将十进制转化成十六进制字符串并返回。

print(bin(10),type(bin(10))) # 0b1010

print(oct(10),type(oct(10))) # 0o12

print(hex(10),type(hex(10))) # 0xa

abs()#返回数字的绝对值。

divmod()#计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。

round()#保留浮点数的小数位数,默认保留整数。

pow()#求x**y次幂。(三个参数为x**y的结果对z取余)

print(abs(-5)) # 5

print(divmod(7,2)) # (3, 1)

print(round(7/3,2)) # 2.33

print(round(7/3)) # 2

print(round(3.32567,3)) # 3.326

print(pow(2,3)) # 两个参数为2**3次幂 结果8

print(pow(2,3,3)) # 三个参数为2**3次幂,对3取余。 余数2

sum()#对可迭代对象进行求和计算(可设置初始值)。

min()#返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)

max()#返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)

print(sum([1,2,3])) #6

print(sum((1,2,3),100)) #106

print(min([1,2,3])) # 返回此序列最小值1

ret = min([1,2,-5,],key=abs) # 按照绝对值的大小,返回此序列最小值

print(ret) #1

dic = {'a':3,'b':2,'c':1}

print(min(dic,key=lambda x:dic[x]))# x为dic的key,lambda的返回值(即dic的值进行比较)返回最小的值对应的键

print(max([1,2,3])) # 返回此序列最大值3

ret = max([1,2,-5,],key=abs) # 按照绝对值的大小,返回此序列最大值-5

print(ret)

dic = {'a':3,'b':2,'c':1}

print(max(dic,key=lambda x:dic[x]))# x为dic的key,lambda的返回值(即dic的值进行比较)返回最大的值对应的键

reversed() #将一个序列翻转,并返回此翻转序列的迭代器。

slice() #构造一个切片对象,用于列表的切片

ite = reversed(['a',2,3,'c',4,2])

for i in ite:

print(i) #2 4 c 3 2 a

li = ['a','b','c','d','e','f','g']

sli_obj = slice(3)

print(li[sli_obj]) #['a', 'b', 'c']

sli_obj = slice(0,7,2)

print(li[sli_obj]) #['a', 'c', 'e', 'g'],开始、结束、步长

format() #与具体数据相关,用于计算各种小数,精算等

bytes()#用于不同编码之间的转化。

s = '你好'

bs = s.encode('utf-8')

print(bs) #b'\xe4\xbd\xa0\xe5\xa5\xbd'

bs = bytes(s,encoding='utf-8')

print(bs) #b'\xe4\xbd\xa0\xe5\xa5\xbd'

s1 = bs.decode('utf-8')

print(s1) #你好

bytearry()#返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256

ret = bytearray('jump',encoding='utf-8')

print(id(ret))

print(ret)

print(ret[0])

ret[0] = 65

print(ret)

print(id(ret))

memoryview()

ret = memoryview(bytes('你好',encoding='utf-8'))

print(len(ret)) #6

print(ret) #

print(bytes(ret[:3]).decode('utf-8')) #你

print(bytes(ret[3:]).decode('utf-8')) #好

ord()#输入字符找该字符编码的位置

chr()#输入位置数字找出其对应的字符

ascii()#是ascii码中的返回该值,不是就返回/u...

print(ord('a')) #97

print(ord('中')) #20013

#chr 输入位置数字找出其对应的字符

print(chr(97)) #a

print(chr(20013)) #中

#是ascii码中的返回该值,不是就返回/u...

print(ascii('a')) #"a"

print(ascii('中')) #'\u4e2d'

repr()#返回一个对象的string形式

1.5、常用相关

id() #用于获取对象的内存地址

hash#获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值

print() #输出

input() #输入

open() #打开文件

type() #对象类型

len#返回一个对象中元素的个数(长度)

dir() #查看一个对象的方法

help() #帮助方法

isinstance() #来判断一个对象是否是一个已知的类型,类似 type()

a=123

isinstance (a,int) #True

__import__ #用于动态加载类和函数

__import__('a') # 导入 a.py 模块

1.6、其他相关

eval()#执行字符串类型的代码,并返回最终结果

exec()#执行字符串类型的代码。

compile()#将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。

eval('2 + 2') # 4

s = '''

for i in [1,2,3]:

print(i)

'''

exec(s) #1 2 3

complex()#函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。

filter()#过滤

def func(x):return x%2 == 0

ret = filter(func,[1,2,3,4,5,6,7])

print(ret) #

for i in ret:

print(i) #2,4,6

zip() #拉链方法

#用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同

l1 = [1,2,3,]

l2 = ['a','b','c',5]

l3 = ('*','**',(1,2,3))

for i in zip(l1,l2,l3):

print(i) #(1, 'a', '*') (2, 'b', '**') (3, 'c', (1, 2, 3))

map()#会根据提供的函数对指定序列做映射。

def square(x) : # 计算平方数

return x ** 2

map(square, [1,2,3,4,5]) # 计算列表各个元素的平方 [1, 4, 9, 16, 25]

sorted()#对所有可迭代的对象进行排序操作

L = [('a', 1), ('c', 3), ('d', 4),('b', 2), ]

sorted(L, key=lambda x:x[1]) # 利用key[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

sorted(students, key=lambda s: s[2]) # 按年龄排序[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

sorted(students, key=lambda s: s[2], reverse=True) # 按降序[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

frozenset()#返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

enumerate()#枚举,返回一个枚举对象 (可迭代对象加序号)

li = ['a','b','c','d','e']

for i in enumerate(li):

print(i)

for index,name in enumerate(li,1): #索引默认从0开始,可改成1开始

print(index,name)

all()#可迭代对象中,全都是True才是True

any()#可迭代对象中,有一个True 就是True

callable() 检查是否是函数 返回True、False

def add(x,y):return x+y

callable(add) # 返回 True

a=123

callable(a) #返回False

1.7、类相关

object() #是Python中所有类的基类,如果定义一个类时没有指定继承哪个类,则默认继承object类。

staticmethod()#静态方法

classmethod()#是一个装饰器函数,用来标示一个方法为类方法

property()#静态属性

super() #用于调用父类(超类)的一个方法

issubclass() #方法用于判断参数 class 是否是类型参数 classinfo 的子类。如果 class 是 classinfo 的子类返回 True,否则返回 False。

vars() #返回对象object的属性和属性值的字典对象,如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()

hasattr(object,name) #判断name是否在object,判断object中是否有一个叫name的方法或者属性

getattr(object,name,"xxx")#取object中name 的值,xxx为找不到报错信息,否则找不到报错

setattr(x,y,v) #给x对象中的y属性设置值v

delattr(x,y)#删除对象x中y

1.8、几个重要的内置函数

zip()

filter()

map()

max()

min()

sorted()

enumerate()

二、匿名函数

lambda a,b:a**b

#关键字 参数:返回值

#参数可以有多个,用逗号隔开

#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值

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

三、递归函数

递归函数:在一个函数里在调用这个函数本身。

递归的最大深度:998

def fun(count):

print(count)

count += 1

fun(count)

fun(1)

可以修改递归最大深度

import sys

sys.setrecursionlimit(2000)

递归调用应该分为两个明确的阶段:递推,回溯

回溯就是从外向里一层一层递归调用下去,回溯阶段必须要有一个明确地结束条件,每进入下一次递归时,问题的规模都应该有所减少

递推就是从里向外一层一层结束递归

#a(5) = a(4) -10

#a(4) = a(3) -10

#a(3) = a(2) -10

#a(2) = a(1) -10

#a(1) = 50

def a(n):

if n == 1:

return 50

return a(n-1)-10

print(a(5)) #10

递归方式实现斐波那契(生成前20项)

def fun(n):

if n==0:

return 0

elif n==1 or n==2:

return 1

else:

return fun(n-1)+fun(n-2)

for i in range(20):

print(fun(i))

#循环方式

a,b=0,1

while b<1000:

print(b)

a,b=b,a+b

四、二分法  (递归)

想从一个按照从小到大排列的数字列表中找到指定的数字,遍历的效率太低,用二分法可以极大的缩小查找规模

l=[2,23,34,45,56,78,89,90]

def find(num,l,start=0,end=len(l)):

print(end,start)

if start <= end:

index=start+(end-start)//2

print('start:[%s] end:[%s] index:[%s] index_val:[%s]' %(start,end,index,l[index]))

if num > l[index]:

start=index+1

elif num < l[index]:

end=index-1

elif num == l[index]:

print('find it',index)

return

find(num,l,start,end)

else:

print("找不到了")

find(89, l) #find it 6

python匿名函数里用for_Python基础之(内置函数、匿名函数、递归)相关推荐

  1. python在匿名函数作和_python之路——内置函数和匿名函数

    阅读目录 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的 ...

  2. 十五. Python基础(15)--内置函数-1

    十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...

  3. Python中匿名函数与内置高阶函数详解

    大家好,从今天起早起Python将持续更新由小甜同学从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示 .刚入门的读者千万不要错过! 很多人学习pyt ...

  4. python中的内置高阶函数

    一. 内置高阶函数的类型 (一).内置高阶函数map """ map():接收两个参数,一个是函数 一个是序列 map将传入的函数依次作用到序列的每个元素,并且把结果作为 ...

  5. python内置数字类型转换函数_Python学习 Day2-2 Python3的基本数据类型、数据内置类型转换函数...

    Python3的基本数据类型 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型& ...

  6. VBS基础篇 - 内置函数

    VBS基础篇 - 内置函数 Date/Time 函数 函数 描述 CDate 把有效的日期和时间表达式转换为日期(Date)类型. Date 返回当前的系统日期. DateAdd 返回已添加指定时间间 ...

  7. Python基础:内置异常(未完待续)

    Python基础:内置异常(未完待续) 参考文章: (1)Python基础:内置异常(未完待续) (2)https://www.cnblogs.com/luo630/p/9176768.html 备忘 ...

  8. fopen是python内置函数吗_Python内置的open函数,打开文件的时候可能会产生异常_学小易找答案...

    [简答题]模仿操作一回. 上传JPG. [单选题]关于唐.宋诗之间的差异,缪钺.钱钟书.启功等学者都曾有过论述,请问以下哪一项评论出自钱钟书的<谈艺录>? [单选题]"羌笛何须怨 ...

  9. python通过内置的什么函数打开一个文件_利用python进行文件操作

    这篇文章主要介绍了如何利用python进行文件操作,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 什么是文件 文件是系统存储区域的一个命名位置,用来存储一些信息,便于后续访问.能够在非 ...

最新文章

  1. Android开发之SharedPreferences的封装
  2. 送你16个matplotlib绘图实用小技巧(附代码)
  3. 工作报告 2010.12.30
  4. iOS打包,证书配置等
  5. 构建高性能.NET应用之配置高可用IIS服务器-第三篇 IIS中三个核心组件的讲解(上)
  6. jcache_随机JCache内容:多个提供程序和JMX Bean
  7. System V信号量
  8. CentOS 8安装logrotate切割日志
  9. Centos 下Nginx 自启动脚本
  10. VirtualBox中安装Android-x86详解
  11. 盘点开发者喜欢用的浏览器,最后这一款值得拥有
  12. 编写c高级语言程序步骤,高级语言程序设计知识点总结一
  13. 7、HTML超链接标签,a标签,锚链接,QQ推广
  14. 【53期分享】4款毕业答辩PPT模板免费下载
  15. godaddy空间如何建网站教程
  16. D38| DP理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
  17. SDK接入(之Android Google Play内支付(in-app Billing)接入的细节
  18. 投屏电视显示无法连接服务器,无法连接服务器.怎么办?
  19. 批处理文件bat 语法备忘
  20. 计算机excel怎么添加实线边框,excel中单元格输入内容怎么设置自动加上实线边框...

热门文章

  1. 2021-11-12每日刷题打卡
  2. Kafka学习整理三(borker(0.9.0及0.10.0)配置)
  3. kafka如何选择分区数及kafka性能测试
  4. Java MultipartFile实现文件上传并为图片加上水印(二)
  5. 【转帖】绝版破解软件教程就不信你学不会!!
  6. [electron]Electron安装报错connect ETIMEDOUT
  7. Android 画椭圆
  8. 速速收藏——程序员接私活的七大平台
  9. codeup墓地目录(算法笔记习题刷题笔记)
  10. ios上传ipa:Xcode导入ipa上传至App Store