Python-内置函数

一、compile()

将字符串编译成Python代码。

编译的模式,single,eval,exec

s = "print(123)"
r = compile(s,"<string>","exec")   #把字符串s 编译成python代码,然后让exec()执行。
exec(r)

 

二、exec()

执行python代码,没有返回值,即没有结果。也就是返回None

可以接收代码或者是字符串都可以执行。即如果接收到的是python代码,那么就会直接执行。如果接收到的是字符串,那么exec()会把字符串编译成python代码,然后再执行该代码。

'''例1:接收字符串,先把字符串转换为python代码,然后再执行该代码'''
s = "print(123)"
exec(s)
输出结果:执行了print(123)
123
'''例2:接收到的是代码,直接执行该代码'''
'''首先是compile()把s字符串转换为代码,然后让exec()来执行'''
s = "print(123)"
r = compile(s,"<string>","exec")
exec(r)
输出结果:
123
'''例3:没有返回值,即没有结果。只能返回None'''
s = "print(123)"
r = compile(s,"<string>","exec")
k = exec(r)


输出结果:
None

三、eval()

执行代码,有返回值,把字符串转换为表达式,进行计算,并返回结果

'''例1:将字符串s转换为代码,并执行s的表达式'''
s = "8*8"
ret = eval(s)
print(ret)
输出结果:
64

 

注意:exec() 无返回结果

        eval() 有返回值

 

四、dir()

快速查看对象提供了哪些功能

print(dir(list))
输出结果:

 

五、divmod(A,B)

博客分页需求:

假如有99个页面,每页显示10个页面,总共需要多少页

divmod()生成的是元组类型的数据。

 

'''例1:获取divmod()的值'''
r = divmod(98,10) #生成的是元组类型
print(r,type(r))
print(r[0])
print(r[1])
输出结果:
(9, 8) <class 'tuple'>
9
8

'''例2:获取n1,n2的值''' n1,n2 = divmod(98,10) print(n1) print(n2)
输出结果:
9
8

 

六、filter()

对于序列中的元素进行筛选,最终获取符合条件的序列!

 

使用方法:

filter(函数,可迭代的对象)

filter,循环第二个参数,让每个循环元素执行函数,如果函数返回值True,表示元素合法。

需求:获取一个列表中大于22的元素。

'''例1:获取列表大于22的元素,平时做法'''
def f1(args):
    result_list = []
    for item in args:
        if item > 22:
            result_list.append(item)
    return result_list

list1  = [11,22,33,44,55]
r = f1(list1)
print(r)

输出结果:
[33, 44, 55]

'''例2:使用filter函数实现'''
def f2(a):
if a > 22:
return True
li = [11,22,33,44,55]
ret = filter(f2,li)
print(list(ret))
输出结果:
[33, 44, 55]

'''例3:使用filter函数与lambda'''
list1 = [11,22,33,44,55]
ret = filter(lambda a:a>22,list1)
print(list(ret))



输出结果:
[33, 44, 55]

通过上面的3个例子,发现例3 最简单。

七,map()

遍历序列,对序列中每个元素进行操作,最终获取新的序列。

map  # 将函数返回元素添加到结果中
map(函数,可迭代的对象(可以for循环的东西))



解释:在python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号--即元素的位置,也称为索引。第一个索引是0,第二个则是1,以此类推。序列中的最后一个元素标记为-1,倒数第二个元素为-2,以此类推。
Python包含6种内建的序列,包括列表、元组、字符串、Unicode 字符串,buffer对象和xrange对象。

练习:
需求:列表中的每个元素都增加100
'''例1:for循环实现'''
list1 = [11,22,33,44,55]
def f1(arg):
    result_list = []
    for item in arg:
        result_list.append(item +100)
    return result_list
t = f1(list1)
print(t)
输出结果:
[111, 122, 133, 144, 155]
'''例2:使用map函数实现''' list1 = [11,22,33,44,55] def f2(a): return a + 100 result = map(f2,list1) print(list(result))
输出结果:
[111, 122, 133, 144, 155]
'''例3:map函数与lambda'''
list1 = [11,22,33,44,55]
result = map(lambda a: a+100,list1)
print(list(result))
输出结果:
[111, 122, 133, 144, 155]

 filter() 与 map()的区别:

看下面的例子:

map()函数:

li = [11,22,33,44,55]
result = map(lambda a: a + 200,li)
print(list(result))
结果:
[211, 222, 233, 244, 255]

filter()函数:

li = [11,22,33,44,55]
r = filter(lambda a: a + 200,li)
print(list(r))
结果:
[11, 22, 33, 44, 55]

从上面的两个例子看得出,filter函数不会去计算,只会对序列中的元素进行筛选,最终获取符合条件的序列!例如 大于,小于,等于条件。

map()函数会计算列表中的元素,最终返回计算后的结果。

 八、len()函数:

计算字符串,列表,元组的长度

 

'''例1:计算字符串长度'''
s = "abcd"
k = len(s)
print(k)
输出结果 : 4
'''例2:计算汉字长度''' s = "北京" k = len(s) print(k)
输出结果:2
'''例3:按照字节计算汉字长度''' s = "北京" b = bytes(s,encoding='utf-8',) print(len(b))
输出结果:6
在utf-8编码中一个汉字占用3个字节
'''例4:计算列表长度''' list1 = [11,22,33,44,55] print(len(list1))
输出结果: 5
'''例5:计算字典长度''' dict1 = {"key1":"value1","key2":"value2","key3":"value3"} print(len(dict1))
输出结果:3

 

九、isinstance()

判断一个对象是否为某个类的实例

'''例1:判断字符串对象是否为str的实例,是返回True,否则返回False'''
s = "beijing"
r = isinstance(s,str)
print(r)
输出结果:Ttrue
'''例2:判断是字符串对象是否为list类的实例,是返回True,否则返回False''' s = "beijing" r = isinstance(s,list) print(r)
输出结果:False

十、zip()

合并列表,把列表的相同位置的元素一一对应,生成为元组类型,作为新的list的一个元素。

例如:

list1 = ["beijing",11,22,33]
list2 = ["is",11,22,33]
list3 = ["China",11,22,33]
r = zip(list1,list2,list3)
print(list(r))
输出结果:
[('beijing', 'is', 'China'), (11, 11, 11), (22, 22, 22), (33, 33, 33)]

 

'''例1:把下面的3个列表中的beijing is China输出'''
list1 = ["beijing",11,22,33]
list2 = ["is",11,22,33]
list3 = ["China",11,22,33]
r = zip(list1,list2,list3)
#print(list(r))
li = list(r)
temp = li[0]
print(temp)
k = " ".join(temp)
print(k)
输出结果:
('beijing', 'is', 'China')
beijing is China

 

posted @ 2016-05-30 23:55  unixfbi.com  阅读(299)  评论(0编辑  收藏  举报