内置函数-max、min、round、sorted、ord、chr、any、all、dir、eval、exec、map、filter、reduce

http://www.nnzhp.cn/archives/152

一、max,min,round

1 print(max([3,4.563,3,6,2.5])) #取最大值,可循环参数便可,int类型的,字符串类型不行
2 print(min(9,4,7,1,0)) #取最小值
3 print(round(3.43535345,2)) #取即为小数,四舍五入
4 print(round(1.12345,2))

二、sorted

1 s = '235434125636234'
2 res = sorted(s) #对字符串排序,默认升序
3 print(list(res)) #须要转换下类型,打印
4 res = reversed(sorted(s))#reversed反转,降序排序
5 print(list(res))
6 print(sorted(s,reverse=True)) #降序也能够这样写,与上面写法效果同样。
#列表有.sort方法

三、ord、chr

1 print(ord('a'))#将字母转成ascii里面的值
2 print(chr(97)) #把数字转成ascii码表里面的字母

四、any、all

1 res = any([1,2,3,4,0]) #若是这个循环迭代序列里面有一个为真的话,就返回true
2 print(res)
3 res = all([1,1,1,0,1])#若是这个循环迭代序列里面,所有为真,就返回true
4 print(res)
1 print(any((1,2,0))) #返回True
2 print(any((0,0,0))) #所有是0,返回False

五、dir获取帮助信息

1 import hashlib
2 m = hashlib.md5('abc'.encode())
3 print(dir(m)) #查看变量m的全部方法

六、eval 执行python代码,只能执行简单的,定义数据类型和运算

实例1:php

1 # eval#执行python代码,只能执行简单的,定义数据类型和运算
2 print(eval('1+1'))
3 print(eval('{"a":"1"}'))

 

执行结果:python

1 2
2 {'a': '1'}

实例2:面试

1 f = open('a.txt').read() #文件里面的内容是“{'username':'abc','password':'123456'}”,可是读出来是字符串
2 print(type(f))
3 print(f)
4 res = eval(f) #转数据类型
5 print(type(res))
6 print(res)

执行结果:安全

1 <class 'str'>
2 {'username':'abc','password':'123456'}
3 <class 'dict'>
4 {'username': 'abc', 'password': '123456'}

七、exec:执行python代码的,只要语法对,都能执行,不太安全

1 # 在线写代码:http://www.runoob.com/try/runcode.php?filename=HelloWorld&type=python3。这种会对敏感代码进行控制
2 my_code = '''  #前面写个变量,三引号做用于变量
3 def my():
4     print('运行程序')
5 my()
6 '''
7 exec(my_code) #执行python代码的,这种方式不安全
运行程序

 八、map 

map是循环帮你调用函数,而后保存函数的返回值,python3中,返回的值放到了一个生成器里面。须要list强制类型转换下(能转成list或元组,集合等可变的类型)。
map后面传的能够循环就行(字符串、列表等)
实例:
写一个调用函数:
1 l = [1, 3, 4, 6, 2, 4, 7]
2 l2 = [] #定义一个空list存放补0后的值
3 def bl(i):  # 定义一个补0的函数
4     return str(i).zfill(2)
5 for i in l:
6     l2.append(bl(i))
7 print(l2)
['01', '03', '04', '06', '02', '04', '07']

上面这个能够用map写:app

1 #另外用map写,帮你循环调用函数
2 l = [1, 3, 4, 6, 2, 4, 7]
3 l2 = list(map(bl,l))
4 # l2 = tuple(map(bl,l))
5 # l2 = set(map(bl,l)) #集合会去重
6 print(l2)
['01', '03', '04', '06', '02', '04', '07']

九、filter()

也是循环调用函数的,若是函数返回的值是真,那么就保存这个值.若是返回值假,则过滤掉(过滤你传过来的值)

实例1:上面的例子用filter过滤:
1 def bl(i):  # 定义一个补0的函数
2     return str(i).zfill(2)
3 l = [1, 3, 4, 6, 2, 4, 7]
4 l3 = list(filter(bl,l))
5 print(l3)

结果:返回的都是真,则所有值保留,list强制类型转换后,放在list中函数

[1, 3, 4, 6, 2, 4, 7]

实例2:spa

1 def bl(i):  # 定义一个补0的函数
2     if i >3:
3         return True
4 l = [1, 3, 4, 6, 2, 4, 7]
5 l3 = list(filter(bl,l)) #循环调用函数,过滤掉传入的list中小于3的值
6 print(l3)

结果:.net

[4, 6, 4, 7]

 十、reduce()

一个月前,我同窗去面试python开发岗,面试官给他出了一道题,使用三种不一样的方法实现1到100的求和,而且要求语法尽可能简洁。同窗的代码以下code

#第一种
sum1 = 0
for i in range(1,101):
sum1+=i
print(sum1)
#第二种
print(sum(range(1,101)))
#第三种
print(reduce(lambda x,y:x+y,range(1,101)))

这三种方法获得的结果都为5050
写完这个代码之后,我同窗下午就收到了offer(固然是由于他薪资要得比较低的缘由!!!)
听了我同窗的传奇经历,我决定好好的学一学python的哪些内建函数。
在此以前,咱们须要了解一下lamba。对象

1:lambda

lambda做为一个表达式,定义了一个匿名函数,使用lambda简化了函数定义的书写形式。使代码更为简洁,使函数的定义方式更为直观,易理解。
举个例子,平时咱们手写一个函数实现两个数的求和,一般这样写:

def f(x,y):
return x+y
print(1,2)

可是使用lambda能够写成这样:

f = lambda x,y:x+y
print(f(1,2))

这里lambda做为一个表达式,定义了一个匿名函数,上例的代码x,y为入口参数,x+y为函数体,其结果就是返回x+y的和。

上面两个代码返回的结果都同样,可是使用lambada更为简洁。
lambda与map,reduce等python内建函数配合使用能发挥更强大的做用。

2:map

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并经过把函数 f 依次做用在 list 的每一个元素上,获得一个新的 list 并返回。(python3中返回的是迭代器)

f = lambda x,y,z:x+y+z
x = map(f,[1,2,3],[4,5,6],[7,8,9])
for i in x:
print(i)

这段代码分别将三个列表进行求和,而后返回一个可迭代的对象。
(1+4+7)
(2+5+8)
(3+6+9)

运行结果


或者可使用list将迭代器转换为列表

print(list(x)
1
运行结果
[12, 15, 18]

3:reduce

reduce()函数接收的参数和 map()相似,一个函数 f,一个list,但行为和 map()不一样,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每一个元素反复调用函数f,并返回最终结果值。
python3使用reduce须要引入

from functools import reduce
print(reduce(lambda x,y:x+y,range(1,101)))
1
这里以我同窗笔试的题目为列子,他先定义了一个lambda表达式,目的是为了求两个数的和,使用range生成1-100的数,因为reduce对list的每一个元素反复调用函数f,并返回最终结果值。
所以,其过程为:
(1,2,3,4,5,6,7,8,9……..100)
1+2=3
3+3=6
6+4=10
10+5=15
………..
这样执行就至关因而执行了一次1+2+3+4+…….+100

reduce()还能够接收第3个可选参数,做为计算的初始值。若是把初始值设为100,计算:

print(reduce(lambda x,y:x+y,range(1,101),100))计算结果为5150

相关文章
相关标签/搜索