Weaving Wong

总觉得该写点啥...

嗨,我是Weaving,一名机器学习爱好者.


分享读书、学习、生活感悟

python基础回顾

  • 反射
    • 在其他语言中 ,通过变量名访问对象通常称为反射,python 中可以通过getattr以及hasattr和setattr函数实现一些代码的高效维护和复用。
  • 鸭子类型(判断对象是否具有某功能)
    • 使用isiterable()判断是否可迭代
    • 使用isinstance(a,list) 判断是否列表
  • 切片 s[:3]
  • datatime模块:
    • strftime方法将datetime转换为字符串
    • 字符串可以通过strptime函数转换为datatime对象
    • 替换时间个体值(dt.replace(minute=0,second=0))
    • 时间间隔 datatime.delta(17,7179)相隔17天7179秒
  • 控制流
    • if 、elif和else
    • for 用于遍历一个集合或者一个迭代器
    • continue
    • break
    • while
    • pass
    • range返回一个迭代器(起始,结尾,步进)range产生的整数包含起始但不包含结尾
    • 三元表达式(会降低代码可读性,不建议多用)
  • 元组
    • 不可变
    • 元组拆包
      • 遍历元组或列表的组成的序列
      • 从函数返回多个值
    • 元组方法:比较少,count常用
  • 列表
    • 增加和移除元素(append,insert,remove,pop,in,not in)
    • 连接和联合列表(‘+’,extend比+速度要快)
    • 排序(sort)
    • 二分搜索和已排序表的维护(bisect查找元素应该被插入的位置,insort按顺序插入到相应位置)
    • 切片
  • 內建序列函数
    • enumerate(遍历序列时追踪当前元素的索引,用于建立索引,用于将列表构建为字典)
    • sorted(返回一个排好序的列表)
    • zip(将列表,元组,或其它序列的元素两两配对,新建一个元组构成的列表)
    • reversed(将一个列表倒序排列,需要实例化,使用list函数或使用for只能迭代一次)
  • 字典
    • 使用del或pop 删除值,pop会在删除的同时返回删除值,并删除键
    • 使用keys方法和values方法实现键,值的迭代器,但迭代出的键值没有顺序,但键,值输出的顺序是对应的。
    • 使用update将两个字典合并或者做值替换更新
    • 从序列生成字典
      • 使用zip 将两个元组做连接后生成字典
      • 字典推导式
    • 默认值的使用(dict.get(a,default),setdefault(),defaultdict(list))
    • 有效的键类型 hash()
  • 集合
    • 集合元素唯一性,无序性
    • 创建:字面值集与大括号使用、set函数生成
    • union 联合两个集合,并集
    • intersection 交集&
    • copy
    • 集合中的要包含列表的话,必须先转成元组
  • 列表,集合和字典的推导式
    • for 循环的高级替代用法,省略,自行学习
  • 函数 (def xx: return xx)
  • 命名空间、作用域,本地函数
    • global 全局变量来存储系统中的某些状态,若大量使用,则需要考虑使用面向对象编程了。
  • 返回多个值(return 元组,或者字符串+元组组成的字典表)
  • 匿名函数
  • 柯里化:部分参数应用
  • 生成器
    • 迭代器是一种用于在上下文中(如for循环)向python解释器生成对象的对象。
    • 生成器是构造新的可遍历对象的一种简洁方式, 普通函数执行并一次返回一个结果,而生成器则惰性的返回一个多结果序列,在每个元素产生后暂停,直到下一个请求。
    • 生成器创建方法:return 改成yield
    • 实际调用生成器时,代码不会立即执行,只有请求生成器中的元素时(如遇到迭代器),才会执行
  • 生成器表达式
    • 简单方式创建生成器:++只需要将列表推导式的中括号改成小括号即可++!
    • 多数情况下,生成器表达式==可以作为函数参数==用于替换列表推导式
  • itertools模块
    • 适用于大多数数据算法的生成器集合
  • 异常处理 (try except finally)
  • 文件与操作系统
    • path
    • open(path)
    • with open(path) as f:
    • read/readlines
    • seek
    • tell(以上都是操作字节游标)
  • python面向对象知识
    # 使用实例调用实例方法
    ca = ClassA()
    ca.func_a()
    # 如果使用类直接调用实例方法,需要显式地将实例作为参数传入
    ClassA.func_a(ca)
最近的文章

python yield 用法总结

阅读别人的python源码时碰到了这个yield这个关键字,各种搜索终于搞懂了,在此做一下总结: 通常的for…in…循环中,in后面是一个数组,这个数组就是一个可迭代对象,类似的还有链表,字符串,文件。它可以是mylist = [1, 2, 3],也可以是mylist = [x*x for x in range(3)]。 它的缺陷是所有数据都在内存中,如果有海量数据的话将会非常耗内存。 生成器是可以迭代的,但只可以读取它一次。因为用的时候才生成。比如 mygenerator =...…

axis继续阅读
更早的文章

pandas 基础笔记(2) - Series和DataFrame操作篇

size() 和count()的区别size跟count的区别: size计数时包含NaN值,而count不包含NaN值user_df = user_df.groupby(['uid','time'])[['qid_time']].count()# 返回值为DFuser_df = user_df.groupby(['uid','time'])[['qid_time']].size()..reset_index(name='new_columns')# 返回值为Series,需要.reset...…

pandas继续阅读