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时为倒序(大到小)

纸上得来终觉浅,绝知此时要躬行