python——内置函数、匿名函数,,一、内置函数内置函数


一、内置函数

内置函数操作  1# # 1.locals()和globals()# def func():#     x=1#     y=2#     print(locals())#     print(globals())# func()# 2.eval,exec,和compile# print(123)# "print(456)"#字符串# eval("print(456)")#吧字符串转换成python代码去执行(有返回值)# exec("print(7889)")#吧字符串转换成python代码去执行(无返回值)# num = eval(‘4+5+6‘)#执行了,有返回值# print(num)## num = exec(‘4+5+6‘)#执行了,没有返回值# print(num)# compile#做编译# com=compile(‘1+2+3‘,‘‘,mode = ‘eval‘)#节省时间# print(eval(com))# print(eval(‘1+2+3‘))#这句效果和上面的compile()效果一样# 3.print# print(‘123‘,end=‘‘)#不换行# print(‘456‘,end=‘‘)# print(1,2,3)# print(1,2,3,4,5,6,sep=‘,‘)# print()函数的小例子# import time# import sys# for i in range(0,101,2):#     time.sleep(0.1)#     char_num = i//2      #打印多少个##     per_str = ‘%s%% : %s\n‘ % (i, ‘*‘ * char_num) if i == 100 else ‘\r%s%% : %s‘%(i,‘*‘*char_num)#     print(per_str,end=‘‘, file=sys.stdout, flush=True)# import sys# for i in range(0, 101, 2):#     time.sleep(0.1)#     char_num = i // 2#     per_str = ‘\r%s%% : %s‘ % (i, ‘*‘ * char_num)#     print(per_str, file=sys.stdout, flush=True)# 4.input()# 5.type()# 6.hash# print(hash(‘asdsffd‘))#一开始几个都是不变的,,然后重新运行一次就变了# print(hash(‘asdsffd‘))# print(hash(‘asdsffd‘))# print(hash(‘asdsffd‘))# print(hash(‘asdsffd‘))# print(hash((1,2,3,4)))# 7.open# r,w,a,r+,w+,a+(都可以加b)# f=open(‘tmp‘,‘r+‘)#r+打开文件# print(f.read(3))#如果读了在写,追加# f.seek(5)#如果seek指定了光标的位置,就从该位置开始覆盖这写# f.write(‘aaaaaa‘)#如果直接写,从头覆盖# f.close()# 8.__import__()# import os# import sys# import time# 9.callable:查看能不能调用# print(callable(123))#数字不能调用结果就是False# print(callable(open))#函数可以调用就返回True# 10.dir  查看数据类型的方法# print(dir(__builtins__))#看着报错,,但其实不报错# print(dir(int))# print(dir(list))# print(dir(0))#和int一样# print(set(dir(list))-set(dir(tuple)))# 11.# num1=int(123)# num2=int(12.3)#强制转换成int类型# print(num1,num2)# 12.取商/余# print(divmod(7,3))# 13.计算最小值# print(min(1,2,3,4))# print(min([5,6]))# 13.计算最大值# print(max(1,2,3,4))# print(max([5,6]))# 14.sum求和# print(sum(1,2,3,4))#出错了,参数是序列,散列不行# print(sum([5,6]))# print(sum((1,2,3,4)))# 以下的两个方式是一样的# print(1+2)# print(int(1).__add__(2))# 15.round精确度# print(round(3.1415926,2))#保留两位# 16.pow()幂运算# print(pow(2,3))# print(2**3)# 17.和数据结构相关的# 1.reversed()顺序的反转# l=[1,2,3,4]# print(list(reversed(l)))#是生成了一个新的列表,没有改变原来的列表(以后能不用reversed就不用reversed,用reverse)## # l.reverse()#在现在的列表的基础上修改了,修改的是原来的列表# print(l)# 2.slice切片# 3.format()#除了格式化以外的作业# print(format(‘test‘,‘<20‘))# print(format(‘test‘,‘>40‘))# print(format(‘test‘,‘^40‘))# 4.bytess=‘你好‘# sb=bytes(s,encoding=‘utf-8‘)# print(sb)# print(sb.decode(‘utf-8‘))# sb2=bytearray(s,encoding=‘utf-8‘)# sb2[0]=229 #修改   了解就好# print(sb2.decode(‘utf-8‘))# print(sb2)# print(sb2[0])# 5.repr# print(repr(‘1234‘))# print(repr(1234))# print(‘name:%r‘%(‘egon‘))#你怎么传进去的就按什么格式打印出来了# 6.set和frozenset(不可变的集合)就像list和tuple# 7.enumerate# l=[‘a‘,‘b‘]# for i in enumerate(l):#     print(i)## for i ,j in enumerate(l):#     print(i,j)# 8.all和any# print(all([1,2,3]))# print(all([0,2,3]))#因为0是False## print(any([1,2,3]))# print(any([0,2,3]))# 9.zip()# l=[1,2,3]# l2=[4,5,6,7,8]# print(zip(l,l2))# print(list(zip(l,l2)))# l3={‘k‘:‘v‘}# print(list(zip(l,l3)))# 10.sort和sorted# l=[1,3,5,-2,-6]# l.sort()# print(l)# l2=[1,3,5,-2,-6]# print(sorted(l2))# print(sorted(l2,key=abs))# print(sorted(l2,key=abs,reverse=True))#默认从小到大排序,修改为True,则从大到小排序# 11.map():我要对我的列表当中的每一个值去做函数里面的操作# l=[1,2,3,4,5]# def pow2(x):#     return x*x# print(list(map(pow2,l)))# 12.filter():从一个列表当中找到所有符合筛选条件的,在组成一个新列表# def aaa(x):#     return x%2==1# ret=list(filter(aaa,[1,2,54,3,6,8,17,9]))# print(ret)

二、匿名函数:也叫lambda表达式

1.匿名函数的核心:一些简单的需要用函数去解决的问题,匿名函数的函数体只有一行

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

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

技术分享图片

请把下面的函数转换成匿名函数def  add(x,y)        return x+yadd()结果:sum1=lambda x,y:x+yprint(sum1(5,8))
dic = {‘k1‘:50,‘k2‘:80,‘k3‘:90}# func= lambda k:dic[k]# print(max(dic,key=func))print(max(dic,key = lambda k:dic[k]))#上面两句就相当于下面一句

  

#map方法l=[1,2,3,4]# def func(x):#     return x*x# print(list(map(func,l)))print(list(map(lambda x:x*x,l)))
l=[15,24,31,14]# def func(x):#         return x>20# print(list(filter(func,l)))print(list(filter(lambda x:x>20,l)))
技术分享图片
# 方法一t1=((‘a‘),(‘b‘))t2=((‘c‘),(‘d‘))# print(list(zip(t1,t2)))print(list(map(lambda t:{t[0],t[1]},zip(t1,t2))))# 方法二print(list([{i,j} for i,j in zip(t1,t2)]))#方法三func = lambda t1,t2:[{i,j} for i,j in zip(t1,t2)]ret = func(t1,t2)print(ret)
现有两个元组((‘a‘),(‘b‘)),((‘c‘),(‘d‘)), 请使用python中匿名函数生成列表[{‘a‘:‘c‘},{‘b‘:‘d‘}]

三、推导式

# li = []# for i in range(1,101):#     li.append(i)# print(li)#l1 = [python1期,python2期,python3期.....]# l1 = []# for i in range(1,12):#     l1.append(‘python%s期‘ % i)# print(l1)#一行搞定,列表推导式:用列表推导式能够构建的任何列表,用别的都可以构建。#一行,简单,感觉高端。但是,不易排错。# li = [i for i in range(1,101)]# print(li)# l2 = [‘python%s期‘ % i for i in range(1,12)]# print(l2)#循环模式#[经过加工的i for i in 可迭代对象]l_obj = (‘python%s期‘ % i for i in range(1,12))print(l_obj)print(l_obj.__next__())print(l_obj.__next__())print(l_obj.__next__())#列表推导式:一目了然,占内存。#生成器表达式:不易看出,节省内容。#循环模式#[经过加工的i for i in 可迭代对象]# l2 = [i*i for i in range(1,11)]# print(l2)#筛选模式#[经过加工的i for i in 可迭代对象 if 条件 筛选]# l3 = [i for i in range(1,101) if i % 3 == 0]# print(l3)# l3 = [i for i in range(31) if i % 3 == 0]# print(l3)## l3 = [i**2 for i in range(31) if i % 3 == 0]# print(l3)# names = [[‘Tom‘, ‘Billy‘, ‘Jefferson‘, ‘Andrew‘, ‘Wesley‘, ‘Steven‘, ‘Joe‘],#          [‘Alice‘, ‘Jill‘, ‘Ana‘, ‘Wendy‘, ‘Jennifer‘, ‘Sherry‘, ‘Eva‘]]## l4 = [name for i in names for name in i if name.count(‘e‘) == 2]# print(l4)# mcase = {‘a‘: 10, ‘b‘: 34}# mcase_frequency = {mcase[k]: k for k in mcase}# print(mcase_frequency)squared = list({x**2 for x in [1, -1, 2]})print(squared)

python——内置函数、匿名函数

评论关闭