一、内置函数
内置函数操作 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.bytes s=‘你好‘ # 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+y add() 结果: sum1=lambda x,y:x+y print(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)
三、推导式
# 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)