python-GOGO
python学习总结
高级特性
切片
翻转操作:s[::-1]
截取片段s=[1,2,3,4,5]
s[:2]==s[0:2]==[1,2]
s[-2:]=[4,5]
s[-2:-1]=[4]
生成器
定义:生成器(generator)是对list缺点的弥补,加入list储存了100万个数据但是只需要调用前100个,剩余的数据必然导致浪费,因此程序员发明了生成器,其特点是一边计算一边输出,解决了内存浪费的问题
语法规则:
1.(x for x in l)
2.yield
tip:list插入元素方法
l.append(number) 列表末尾添加一个元素
l.insert(place,number) 指定位置插入
l.extend(number1,number2)列表末尾添加多个元素
可迭代对象(Iterator)
- 可以使用next()和for的对象是可迭代对象,相似的概念是可迭代(Iterabel)其指的是可以使用for的对象。
- dict str list tuple为可迭代
- generator为可迭代对象
- 可迭代对象是惰性计算的,其可以包含无穷大的数据,例如自然数,但是list等是无法做到的。
- 值得一提的是,for循环的本质是通过不断调用next实现的
iter()函数
:将dict,list等转化为iterator
函数式编程
高阶函数:将函数作为变量传入另一个函数,例如
def add(a,b,f):
return f(a)+f(b)
print(add(1,-15,abs))
output:16
map/reduce
map(函数,可迭代对象):对可迭代对象的每一个元素使用传入的函数返回新的iterator
例子
map(abs,[1,-2,-45,-5])reduce(f,[x1,x2,x3,x4]):函数f(x,y)接受两个参数,reduce函数将上一次的f返回值作为新的函数f的x,list的下一个值作为y
例子
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
output:f(f(f(x1, x2), x3), x4)map()将函数作用于序列得到心得序列
reduce() 用于将一个函数依次作用于上次计算的结果和序列的下一个元素,以此得到最终结果
过滤器(filter)
定义:filter(f,l)
过滤器接受一个函数和列表,根据f的返回值是True or False 决定保留或删去元素。其作用在于对列表进行筛选
排序(sort)
定义:sort(L,key=f,reverse=)
L为列表,key一般为函数,将函数返回值作为排序标准,reverse=True时为倒序(大到小)
纸上得来终觉浅,绝知此时要躬行
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Blog of oywc!