熟悉和掌握python的内置函数,可以在写算法的时候简化代码。
关键字
lambda表达式 :不定义函数名,使用一次的函数
1 | 1, 2), (4, 1), (9, 10), (13, -3)]#type :list a = [( |
yield函数:可构建生成器,对可迭代对象进行逐次返回,节约计算资源,如keras的 imagegenerator
1. 可迭代对象`iterable`是实现了`__iter__()`方法的对象,`iter()`方法返回`iterator`对象,通过`next`显示的获取元素,用完一个删一个,当迭代器为空时会抛出异常(StopIteration)(和c++迭代器 (`pop_front`+`iterator++`)理解类似),调用迭代器`for item in iterator:`。
1 | #如list是一个可迭代对象包含__iter__()方法,使用iter(list)变成迭代器iterator |
生成器
generator
就是带yield
的函数,generator
就是一种迭代器。yield
相当于在迭代器迭代的时候加了个断点返回元素不终止执行,遇到下一个next()触发一次执行。总结:
- 可迭代对象(Iterable)是实现了
__iter__()
方法的对象,通过调用iter()
方法可以获得一个迭代器(Iterator) - 迭代器(Iterator)是实现了
__iter__()
和__next__()
的对象 for ... in ...
的迭代,实际是将可迭代对象转换成迭代器,再重复调用next()
方法实现的- 生成器(generator)是一个特殊的迭代器,它的实现更简单优雅.
yield
是生成器实现__next__()
方法的关键.它作为生成器执行的暂停恢复点,可以对yield
表达式进行赋值,也可以将yield
表达式的值返回.
- 可迭代对象(Iterable)是实现了
类型转换
tuple:根据传入的参数创建一个新的元组
1 | #不传入参数,创建空元组 tuple() |
list:根据传入的参数创建一个新的列表
1 | >>>list() # 不传入参数,创建空列表 |
dict:根据传入的参数创建一个新的字典
1 | # 不传入任何参数时,返回空字典。 dict() |
enumerate:根据可迭代对象创建枚举对象
1 | 'Spring', 'Summer', 'Fall', 'Winter'] seasons = [ |
range:根据传入的参数创建一个新的range对象
1 | 10) a = range( |
iter:根据传入的参数创建一个新的可迭代对象
1 | 'abcd') #字符串序列 a = iter( |
序列操作
all:判断可迭代对象的每个元素是否都为True值
1 | 1,2]) #列表中每个元素逻辑值均为True,返回True all([ |
any:判断可迭代对象的元素是否有为True值的元素
1 | 0,1,2]) #列表元素有一个为True,则返回True any([ |
filter:使用指定方法过滤可迭代对象的元素
1 | 1,10)) #定义序列 a = list(range( |
map:使用指定方法去作用传入的每个可迭代对象的元素,生成新的可迭代对象
1 | 'a','b','b','fd']))#每一个可迭代对象进行操作 a = str(map(list,[ |
next:返回可迭代对象中的下一个元素值
1 | 'abcd') a = iter( |
reversed:反转序列生成新的可迭代对象
1 | 10)) # 传入range对象 a = reversed(range( |
sorted:对可迭代对象进行排序,返回一个新的列表
1 | 'a','b','d','c','B','A'] a = [ |
zip:聚合传入的每个迭代器中相同位置的元素,返回一个新的元组类型迭代器
1 | 1,2,3] #长度3 x = [ |
对象操作
dir:返回对象或者当前作用域内的属性列表
1 | #非常重要的list属性,leetcode写代码可以直接用! dir(list) |
type:返回对象的类型,或者根据传入的参数创建一个新的类型
1 | >>> type(1) # 返回对象的类型 |
len:返回对象的长度
1 | 'abcd') # 字符串 len( |
变量操作
globals:返回当前作用域内的全局变量和其值组成的字典
1 | globals() |
global:定义全局变量
1 | def fg(): |
locals:返回当前作用域内的局部变量和其值组成的字典(在调试函数的时候可以返回local)
1 | def f(): |
交互操作
print:向标准输出对象打印输出
1 | 1,2,3) print( |
input:读取用户输入值
1 | 'please enter your filename:') file = input( |
文件操作
open:使用指定的模式和编码打开文件,返回文件读写对象
1 | # rb为二进制读,wb为二进制写操作 |
参考: