一、内置函数:
画思维导图
迭代器中:range next iter
locals() 本地的命名空间
globals() 全局的命名空间
# def func(): # a = 1 # b = 2 # print(locals()) # print(globals()) # 全局命名空间中的名字 # print(locals()) # 本地的命名空间 # print(globals()) # 全局的命名空间 # func()
input
99乘法表 %2s 输入一个字符也占两个位置
sep以什么分割 end 不换行
#99乘法表 # for i in range(1,10): # for j in range(1,i+1): # print('%s * %s = %2s' %(i,j,i*j),end=' ') # print() #注意位置
进度条例子 :
flush=True 立即打印到屏幕上
相当于seek0 只适合于越写越长的情况
1 # import time 2 # for i in range(0,101,2): #0,2,4,6,8 3 # time.sleep(0.1) 4 # char_num = i//2 #打印多少个'*' 4 5 # if i == 100: 6 # per_str = ' %s%% : %s ' % (i, '*' * char_num) 7 # else: 8 # per_str = ' %s%% : %s'%(i,'*'*char_num) 9 # print(per_str,end='',flush=True) # 0.01
print() 写文件
# python 能直接操作文件 —————— 需要发起系统调用 才能操作文件
hash
字典底层的存储和set集合的去重 都相关---可了解
# print(hash('1291748917')) # print(hash('1291748917')) #对可hash的数据类型进行hash之后会得到一个数字 # 在一次程序的执行过程中 对相同的可哈希变量 哈希之后的结果永远相同的 # 在一次程序的执行过程中 对不相同的可哈希变量 哈希之后的结果几乎总是不相同的 # hash 字典底层的存储 和set 集合的去重机制 都相关
id()
import
help---帮助
callable 可调用 返回True False
# callable 可调用 # def func():pass # a = 1 # print(callable(func)) #True # print(callable(a)) #False
dir 查看内置函数的属性!!学面向对象常用
查看一个变量所拥有的所有名字
bin(10) 0b1010
oct(10) 0o12
hex(10) 0xa
与数字有关:
abs() 绝对值 abs(-4) 4
divmod商余函数----分页用
print(divmod(7,3)) #返回一个元祖(2,1)
round(3.1415926,4) #默认取整,小数精确,会四舍五入
pow 次方
pow(2,3) 2**3 8
pow(2,3,5) (2**3)%5 3
sum求和 接收可迭代对象 数字要加[]
sum([1,2],20) 从20开始求和
sum(range(1,6))
print(sum([1,2,3,4,5])) print(sum([1,2,3,4,5],0)) print(sum([1,2,3,4,5],20)) print(sum(range(1,6)))
min 最小值 3个例子
-2 !!先取key之后,根据返回值排序,再返回原来那个数 面试!
-2 取第一个 带key的是重点!
1 # print(min([1,2,3,4,5])) #1 2 # print(min(1,2,3,4)) #1 3 # print(min(1,-2,3,-4)) #-4 4 # print(min(1,-2,3,-4,key=abs)) #1 5 # def func(num): 6 # return num%2 7 # print(min(-2,3,-4,key=func)) #-2
max 最大
reversed
reverse在原列表上修改
reversed 原列表不变,生成一个迭代器,可用next调用
1 # ret = [1,2,3,4,5] 2 # ret.reverse() 3 # print(ret) 4 5 # ret1 = reversed(ret) 6 # ret2 = reversed((1,2,3,4,5)) 7 # print(ret) 8 # print(list(ret1)) 9 # print(list(ret2)) 10 11 结果: 12 [5, 4, 3, 2, 1] 13 [5, 4, 3, 2, 1] 14 [1, 2, 3, 4, 5] 15 [5, 4, 3, 2, 1]
format 与格式化相关的方法
# print(format('test', '<20')) # print(format('test', '>20')) # print(format('test', '^20')) 结果: test test test
ord('a') 97
小写的a 97+26 大写的A-Z 65+26
chr(97) a
repr 显示数据的类型!!常用
# print(1) # print('1') # print(repr(1)) # print(repr('1')) 结果: 1 1 1 '1'
enumerate() 接收容器类型 列表、元祖
打印索引与值-----给商品加序号
enumerate(li,1) 以1开始
枚举函数 一个容器类型,一个序号起始值 返回值:可迭代的
1 # l = ['苹果','香蕉'] 2 # # ret = enumerate(l,1) # 枚举 接收两个参数:一个容器类型,一个序号起始值 返回值:可迭代的 3 # # print(ret) 4 # for num,item in enumerate(l,1): 5 # print(num,item) 6 7 8 结果: 9 <enumerate object at 0x0000000002167708> 10 1 苹果 11 2 香蕉
函数记参数及返回值!
all 主要有一个为假,就为False 不常用
any 主要有一个为真,就为True 不常用
1 # print(all([1,2,3,4,5])) 2 # print(all([0,1,2,3,4,5])) 3 # print(all(['a',1,2,3,4,5])) 4 # print(all(['',1,2,3,4,5])) 5 # print(any([0,None,False])) 6 7 8 结果: 9 True 10 False 11 True 12 False 13 False
zip 面试题!矩阵!拉链方法
按最短的拉起来 返回可迭代的
1 # ret = zip([1,2,3,4,5],('a','b','c','d'),(4,5)) #拉链方法 2 # print(ret) 3 # for i in ret: 4 # print(i) 5 6 结果: 7 (1, 'a', 4) 8 (2, 'b', 5)
内置函数无视频,电脑卡死
filter 常考
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,
filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
例子 返回:可迭代的
练习开平方根!
1 lst = [1, 4, 6, 7, 9, 12, 17] 2 # def func(num): 3 # if num % 2 == 0:return True 4 # filter(func,lst) 5 # for i in filter(func,lst): 6 # print(i) 7 8 注释的相当于下面三行的功能 9 g = (i for i in lst if i%2 == 0) 10 for i in g : 11 print(i)
1 l = ['test', None, '', 'str', ' ', 'END'] 2 def func(item): 3 if item and item.strip():return True 4 for i in filter(func,l): 5 print(i)
map 常考 返回可迭代的
Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。
map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
例子 书写
1 # print([i**2 for i in range(10)]) 2 3 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 4 5 # def func(num): 6 # return num ** 2 7 # for i in map(func,range(10)):print(i) 8 9 结果: 10 0 11 1 12 4 13 9 14 16 15 25 16 36 17 49 18 64 19 81
sorted
补充列表中sort排序:加key
sorted不会改成原有列表,要赋值新列表
长度例子
1 # 排序功能 2 l = [1,-4,-2,3,-5,6,5] 3 l.sort(key=abs) 4 print(l) 5 l = [1,-4,-2,3,-5,6,5] 6 new_l = sorted(l,key=abs,reverse=True) 7 print(new_l) 8 9 l = [[1,2],[3,4,5,6],(7,),'123'] 10 print(sorted(l,key=len)) 11 12 13 结果; 14 [1, -2, 3, -4, -5, 5, 6] 15 [6, -5, 5, -4, 3, -2, 1] 16 [(7,), [1, 2], '123', [3, 4, 5, 6]]
eval() 执行字符串中代码,有返回值 慎用
eval('print(123)') 可以执行
exec() 执行字符串中代码,无返回值 慎用
例子
1 eval('print(123)') 2 exec('print(123)') 3 print(eval('1+2-3*20/(2+3)')) 4 print(exec('1+2-3*20/(2+3)')) 5 6 结果: 7 123 8 123 9 -9.0 10 None
读内置函数的博客
https://www.processon.com/view/link/5adc6062e4b04721d63171eb
3218
首先掌握标红、标黄的;;可以看老师内置函数的博客,自己去分类
标红的不会,无法写代码
标黄的 能够节省你的代码,面试会问到
最重要的:min max sorted filter map 面试明星知识点
你经常不见的,没被说重点的,就不用了解了
二、匿名函数
函数写法:。。。
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 函数名 = lambda 参数 :返回值 #参数可以有多个,用逗号隔开 #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值 #返回值和正常的函数一样可以是任意数据类型
1 # lambda表达式 2 def add(a,b): 3 return a+b 4 print(add(1,3)) 5 6 add = lambda a,b : a+b 7 print(add(1,2)) 8 9 10 11 结果: 12 4 13 3
lambda表达式
add=lambda a,b:a+b
print(add(1,2))
平方、min练习写成lambda
1 print([i**2 for i in range(10)]) 2 3 4 # def func(num): 5 # return num ** 2 6 # for i in map(func,range(10)):print(i) 7 8 9 10 for i in map(lambda num : num ** 2 ,range(10)):print(i)
1 def func(num): 2 return num%2 3 print(min(-2,3,-4,key=func)) 4 5 6 相当于 7 print(min(-2,3,-4,key=lambda num:num%2))
面试题:
print(x) 24
1 # d = lambda p:p*2 2 # t = lambda p:p*3 3 # x = 2 4 # x = d(x) # x = 4 5 # x = t(x) # x = 12 6 # x = d(x) 7 # print(x)
zip
# 现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}] # def func(t): # return {t[0]:t[1]} # ret = map(func,zip((('a'),('b')),(('c'),('d')))) # print(list(ret)) 或 # ret = map(lambda t:{t[0]:t[1]},zip((('a'),('b')),(('c'),('d')))) # print(list(ret))
[]--()
1 # 3.以下代码的输出是什么?请给出答案并解释。 2 def multipliers(): 3 return [lambda x:i*x for i in range(4)] 4 print([m(2) for m in multipliers()]) 5 6 7 # def multipliers(): 8 # lst = [] 9 # i = 0 10 # lst.append(lambda x:i*x) 11 # i = 1 12 # lst.append(lambda x:i*x) 13 # i = 2 14 # lst.append(lambda x:i*x) 15 # i = 3 16 # lst.append(lambda x:i*x) 17 # # lst = [lambda x:3*2,lambda x:i*x,lambda x:i*x,lambda x:i*x] 18 # return lst 19 # print([m(2) for m in multipliers()]) 20 结果: 21 [6, 6, 6, 6] 22 23 24 # 请修改multipliers的定义来产生期望的结果。 25 26 # def multipliers(): 27 # return (lambda x:i*x for i in range(4)) 28 g = (lambda x:i*x for i in range(4)) 29 # print([m(2) for m in g]) 30 31 结果: 32 [0, 2, 4, 6]
自己整理笔记(基础数据类型、文件操作、函数)
三、递归函数
error 998
可以修改最大递归深度 import sys
加if
递归就是自己调用自己,有一个停止的条件
往下走 递 往上走 归
1 # def func(): 2 # print(1) 3 # func() 4 # 5 # func() # 997 /998 6 7 # import sys 8 # def foo(n): 9 # print(n) 10 # n += 1 11 # foo(n) 12 # foo(1)
1 # 6! 2 # print(6*5*4*3*2*1) 3 def fn(n): 4 if n == 1:return 1 5 return n*fn(n-1) 6 print(fn(6)) 7 8 # 递归 就是自己调用自己 9 # 递归需要有一个停止的条件 10 # def fn(6): 11 # if 6 == 1:return 1 12 # return 6*fn(5) 13 # print(fn(6)) 14 # 15 # def fn(5): 16 # return 5*fn(4) 17 # 18 # def fn(4): 19 # return 4*fn(3) 20 # 21 # def fn(3): 22 # return 3*fn(2) 23 # 24 # def fn(2): 25 # return 2*fn(1) 26 # 27 # def fn(1): 28 # return 1