Python基础—内置函数(Day14)
一、内置函数
1.***eval:执行字符串类型的代码,并返回最终结果(去掉括号里面是什么就返回什么)。
print(eval('3+4')) #7
ret = eval('{"name":"laonanhai"}')
print(ret,type(ret)) #{'name': 'laonanhai'}
2.***exec:执行字符串类型的代码,流程语句(没有返回值,打印执行过程)。
ret1='''
li= [1,2,3]
for i in li:
print(i)
'''
print(exec('3+4')) #None
print(exec(ret1)) #返回执行过程
3.***print:打印输出。
print(self ,*args, sep=' ', end='\n',file=None )
print(333,end='') # 每一次打印的结尾默认为换行符
print(666) #333666
print(111,222,333,sep='|')# 打印多个值之间的分隔符,默认为空格111|222|333
with open('log',encoding='utf-8',mode='a') as f1:
print('555',file=f1) # 默认是输出到屏幕,如果有文件句柄,输出到文件
4.***callable:函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败,但如果返回False,调用对象object绝不会成功。
def func1():
print(555)
a = 3
f = func1
print(callable(f)) # True
print(callable(a)) # False
5.***dir:返回参数的方法
print(dir(list))
6.***sum:对可迭代对象进行求和计算(可设置初始值)
print(sum([1,2,3])) # 6
print(sum([1,2,3],100)) # 106
7.***max:返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)
print(max([1,2,3]))
ret = max([1,2,-5],key=abs)# -5 按照绝对值(abs)的大小返回此序列的最大值。
print(ret)
8.***min:返回可迭代对象的最小值,按照绝对值(abs)的大小返回此序列的最小值。
ret = min([1,2,-5],key=abs)
print(ret) #1
9.***reversed:将一个序列翻转,并返回此翻转序列的迭代器。
ite = reversed(['a',2,3,'c',4,2])
print(ite)
for i in ite:
print(i)
10.***format:用于格式化输出
s1 = format('test','<30')
print(format('test','<30'))
print(format('test','>20'))
print(format('test','^20'))
print(len(s1))
11.***repr 返回一个对象的string形式(原形毕露)repr括号里面是什么就返回什么。
print(repr('{"name":"alex"}')) #'{"name":"alex"}'
print('{"name":"alex"}') #{"name":"alex"}
12.***sorted:对所有可迭代对象进行排序。
l1 = [1, -2, 7, -8, 5]
print(sorted(l1,reverse=True,key=abs)) #[-8, 7, 5, -2, 1]
13.***enumerate:枚举(迭代器),返回一个枚举对象(返回索引及对应的元素)。
li = ['laonanhai','alex','wusir','taibai']
print(enumerate(li))
print('__iter__' in dir(enumerate(li))) # True
print('__next__' in dir(enumerate(li))) # True
li = ['laonanhai','alex','wusir','taibai']
for k,v in enumerate(li):
print(k,v)
执行结果:
0 laonanhai
1 alex
2 wusir
3 taibai
for k,v in enumerate(li,1):
print(k,v)
执行结果:
1 laonanhai
2 alex
3 wusir
4 taibai
14.***zip(迭代器) 拉链方法,将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,返回由这些元组组成的列表,形成元组的个数与最短的可迭代对象的长度一样。
l1 = [1, 2, 3, 4]
l2 = ['a','b','c','d','e']
l3 = ['*', '**',(1,2,3),11]
l4 = ['0','99',(1,2,3),11]
print('__iter__'in dir(zip(l1,l2,l3,l4))) #True
print('__next__'in dir(zip(l1,l2,l3,l4))) #True
for i in zip(l1,l2,l3,l4):
print(i) 执行结果:
(1, 'a', '*', '0')
(2, 'b', '**', '99')
(3, 'c', (1, 2, 3), (1, 2, 3))
(4, 'd', 11, 11)
15.compile:将字符串类型的代码编译,代码对象能够通过exec语句来执行,或者eval来执行。
codel='for i in range(0,10):print(i)'
compilel=compile(codel,'','exec')
exec(compilel)
16.hash:获取一个对象的哈希值。
print(hash('123'))
print(hash('args')) -4595678429660868460
4807300187244893110
17.heip:用于查看函数或模块用途的详细说明。
print(help(list))
18.next:内部实际使用了__next__方法,返回迭代器的下一个项目。
it =iter([1,2,3,4,5])
while True:
try:
x=next(it)
print(x)
except StopIteration:
break
19.iter:函数用来生成迭代器(将一个可迭代对象,生成迭代器)。
20.int:将字符串或数字转化成整型。
21.float将整数或字符串转换成浮点型。
22.complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。
23.bin:将十进制转换成二进制并返回。
24.october:将十进制转换成八进制字符串并返回。
25.hex:将十进制转换成十六进制字符串并返回。
26.abs:返回数字的绝对值。
print(abs(-10)) #10
27.divmod:计算除数与被除数的结果,返回一个包含商和余数的元组
print(divmod(11,3)) #3,2
28.round:保留浮点数的小数位数,默认保留整数。
print(round(3.1415,2)) #3.14
29.pow:求x**y次幂(三个参数为x**y的结果对z取余)。
print(pow(2,3)) #8
print(pow(2,3,5)) #3
30.slice:构造一个切片对象,用于列表的切片。
li = ['a','b','c','c','d','e']
sli_obj = slice(3)
print(li[sli_obj]) # ['a', 'b', 'c']
sli_obj = slice(6,0,-2)
print(li[sli_obj]) #['e', 'c', 'b']
31.bytes:不同编码之间的转换,将unicode转化成非unicode。
32.bytearry:返回一个新字节数组,这个数组例的元素是可变的,并且每个元素的值范围0<=x<256。
ret = bytearray('alex',encoding='utf-8')
print(id(ret)) #144623497488
print(ret) #bytearray(b'alex')
33.ord:输入字符找该字符编码的位置 unicode
34.chr:输入位置数字找出其对应的字符 unicode
35.ascii:是ascii码中的返回该值,不是就返回
36.all:可迭代对象中全都是True才是True。
37.any:可迭代对象中有一个True就是True。
print(all([1,2,True,0])) #False
print(any([1,'',0])) #True
38.filter()函数接收一个函数f和一个list,list的每个元素作为参数传递给函数f进行判断,返回true或false,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:
def is_odd(x):
return x % 2 == 1
然后利用filter()过滤掉偶数:
filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
结果:[1, 7, 9, 17]
39.map()函数接收一个函数f和一个list,并把函数f一次作用在list的每一个元素上,得到一个新的list返回。
例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9],如果希望把list的每一个元素都做平方,就可以用map()函数名
def f(x):
return x*x print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
输出结果:[1, 4, 9, 16, 25, 36, 49, 64, 81]
注:利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。
40.reduce()函数接收的参数和map()函数类似,一个函数并返回f,一个list,单行为和map()不同,reduce()传入的函数f必须接收两个参数,reduce()对list的每个元素反复调用函数f, 并返回最终的结果值。
例如,编写一个f函数,接收x,y两个参数,返回x和y的和:
def f(x,y):
return x + y reduce(f,[1,3,5,7,9])
调用 reduce(f,[1,3,5,7,9])时,reduce()函数做如下计算:
先计算头两个元素:f(1, 3),结果为4;
再把结果和第3个元素计算:f(4, 5),结果为9;
再把结果和第4个元素计算:f(9, 7),结果为16;
再把结果和第5个元素计算:f(16, 9),结果为25;
由于没有更多的元素了,计算结束,返回结果25。
reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,结果将变为125
reduce(f, [1, 3, 5, 7, 9], 100)
使用lambda函数写法:reduce(lambda x,y:x+y,[1,3,5,7,9])
备注:python3中,reduce()函数已经被从全局名称空间中移除,它现在被放置在 fucntools 模块 里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:
from functools import reduce def add(x,y):
return x + y print (reduce(add, range(1, 101)))
二、匿名函数
为了解决那些功能很简单的需求而设计的一句话函数。
函数名 = lambda 参数: 返回值
func = lambda x:x**2
print(func(5)) #25
func1 = lambda x,y:x+y
print(func1(2,3)) #5
lambda函数与内置函数的结合:
dic={'k1':10,'k2':20,'k3':30}
print(max(dic,key=lambda x: dic[x])) #k3
print(dic[max(dic,key=lambda x: dic[x] )]) #30
# print(dic[max(dic,key=lambda x: dic[x] )]) #30
res = map(lambda x:x**2,[1,4,8])
for i in res:
print(i) #1 16 64
l1 = [1,2,3,11,12,40,20,50,79]
def func(x):
return x > 10
ret = filter(lambda x:x >10,l1)
for i in ret:
print(i)
lambda后面可以加三元运算符
func = lambda x,y:x if x > y else y
print(func(4,2)) #4
Python基础—内置函数(Day14)的更多相关文章
- python基础——内置函数
python基础--内置函数 一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- Python基础-内置函数、模块、函数、json
内置函数 1.id()返回对象的内存地址: 2. type() 返回对象类型: 3.print()打印输出: 4. input()接受一个标准输入数据,返回为string类型: 5. list() ...
- python基础----内置函数----匿名函数(lambda)
Python3版本所有的内置函数: 1. abs() 获取绝对值 >>> abs(-) >>> abs() >>> abs() >>& ...
- Python菜鸟之路:Python基础-内置函数补充
常用内置函数及用法: 1. callable() def callable(i_e_, some_kind_of_function): # real signature unknown; restor ...
- Python基础-内置函数总结
内置函数 int('123') float() string() tuple() set() dict(name='zdd',age=18) type()#查看类型 len()#看长度,其实是元素的个 ...
- Python 基础 内置函数 迭代器与生成器
今天就来介绍一下内置函数和迭代器 .生成器相关的知识 一.内置函数:就是Python为我们提供的直接可以使用的函数. 简单介绍几个自己认为比较重要的 1.#1.eval函数:(可以把文件中每行中的数据 ...
- python基础--内置函数map
num_1=[1,2,10,5,3,7] # num_2=[] # for i in num_1: # num_2.append(i**2) # print(num_2) # def map_test ...
- python 基础 内置函数
内置参数 print(all([5,-1,5])) # 非0都是真 true print(all([0,-1,5])) # false print(any([1,0,5])) # 有一个数据为真,就为 ...
随机推荐
- SYCOJ#111、吉祥物
题目-吉祥物 (shiyancang.cn) 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,x; 4 int pos(i ...
- iframe页面总是提示需要重新登录怎么办
原文链接:iframe页面二次登录问题 生产问题 问题背景 由于历史原因,公司内部系统有一些页面是基于iframe嵌入的其他系统的页面,之前一直运行正常,最近不知什么原因接连出现访问所有iframe页 ...
- Lyft 宣布开源基础设施工具管理平台 Clutch!
今天我们很高兴地宣布,Lyft 的基础设施工具可扩展 UI 和 API 平台clutch已开放源代码,clutch使工程团队能够构建.运行和维护用户友好的工作流,这些工作流还包含特定于域的安全机制和访 ...
- EF4中多表关联查询Include的写法
大家好,好久没有写作了,最近遇到了个问题,最终是靠自己的尝试写出来的,希望可以帮到有需要的人. 在我们查询时通常会遇到多级表关联的情况,很多时候有人会想写一个from LINQ语句来解决,那么冗长的代 ...
- 微软的Serialize和Newtonsoft的SerializeObject比较
微软的序列化反序列化组件出来已有好几年了,刚出来的时候各种吐槽.最近在优化代码,比较了一下微软的Serialize和Newtonsoft的SerializeObject,感觉大部分场景下可以用微软的序 ...
- [USB波形分析] 全速USB波形数据分析(二)
在上一篇文章全速USB波形数据分析(一)介绍了全速USB的数据包(Packet)的组成,数据的类型等基本知识.这篇文章介绍USB的几种传输方式 事务(Transaction) USB协议定义了三种不同 ...
- 【算法】nSum问题
LeetCode中出现了2sum, 3sum, 4sum的问题,文章给出了一种通用的解法,想法是将n_sum问题转换为(n-1)_sum问题,具体步骤如下: 定义函数sum(n, target),表示 ...
- 一个BPMN流程示例带你认识项目中流程的生命周期
摘要:本文详细说明了在工作流Activiti框架中的BPMN流程定义整个运行的生命周期. 本文分享自华为云社区<本文详细说明了在工作流Activiti框架中的BPMN流程定义整个运行的生命周期& ...
- JuiceFS 在理想汽车的使用和展望
理想汽车是中国新能源汽车制造商,设计.研发.制造和销售豪华智能电动汽车,于 2015 年 7 月创立,总部位于北京,已投产的自有生产基地位于江苏常州,通过产品创新及技术研发,为家庭用户提供安全及便捷的 ...
- 阿里Java规范:【强制】所有的 POJO 类属性必须使用包装数据类型
在 Java 开发手册中有这一条: 我们知道基本类型和包装类型有很多不同点: 封装类型可以调用各种方法,而基本类型没有 封装类型声明字段之后可以不设置默认值,而基本类型需要初始化默认值.比如 int ...