day19 - 三大神器和csv文件操作
一 . 迭代器
- 什么是迭代器(iter)
- 迭代器是容器型数据类型
- 特点:无法通过打印迭代器查看元素、也无法统计元素个数;需要使用元素的时候必须将元素从迭代器取出,取出以后该元素就从迭代器中消失
- 创建迭代器 - 将其他序列转换成迭代器
- 获取迭代器的元素
- 不管以什么方式获取到了迭代器的元素,别获取到的元素就会从迭代器中消失
- 获取单个元素:next(迭代器)
- 遍历:支持for in操作
二 . 生成器
- 什么是生成器
- 生成器是一种容器,但是这个保存的不是多个数据,而是产生(创建)多个数据的算法。
- 同时具有迭代器保存数据的特点:1.打印看不到内容 2.不支持len操作 3.元素也是取一个就少一个,而且不能再放回生成器
- 创建生成器
- 调用一个带有yield关键字的函数可以得到一个生成器对象
- 注意:如果函数中有yield,那么调用这个函数不会执行函数体,也不会获取函数放回值,而是创建一个生成器对象。
- 控制生成器产生数据的个数和值
- 生成器产生数据的个数和值由执行函数体的时候会遇到几次yield,以及每次遇到yield的时候的值来确定
- 生成器创建数据的原理
- 调用函数创建生成器的时候不会执行函数体,再通过生成器对象获取生成器中的元素的时候才会执行函数,而且每次在执行函数体的时候只会执行到yield就会停止,并且会记录停止位置,下次在获取元素,会从上次执行结束的位置接着执行
三 . 装饰器
- 装饰器
- 装饰器是用来给函数添加功能的
- 使用装饰器
四 . csv文件操作
-
csv文件(逗号分隔值文件) - 让数据以表格的方式存储
-
csv文件操作
- 方法1:读文件内容得到一个迭代器,迭代中的元素是每一行内容对应的列表
- a.创建reader对象:csv.reader(文件对象) - 创建文件对应的radder,并且获取文件内容
- 注意:打开csv文件的时候需要给参数newline赋值为空串
- b.通过reader对象(本质是一个迭代器)获取文件内容
- a.创建reader对象:csv.reader(文件对象) - 创建文件对应的radder,并且获取文件内容
- 方法2:读文件内容的到一个迭代器,迭代器中的元素是每一行内容对应的字典(键是每一列的第一行数据)
- 方法1:读文件内容得到一个迭代器,迭代中的元素是每一行内容对应的列表
-
csv文件写操作
-
方法1 - 以列表为单位写入一行数据
-
a.创建writer对象:csv.writer(文件对象)
-
b.写入数据 - writer对象.writerow(列表) - 一次写入一行数据
writer对象.writerows(元素是列表的列表) - 同时写入多行数据
-
-
方法2 - 以字典为单位写入一行数据
- a.创建DictWriter对象:csv.DictWriter(文件对象,字典的键)
- b.将字典的键作为文件内容写入文件的第一行
- c.写入数据
- writer对象.writerow(字典) - 一次写入一行数据
- writer对象.writerows(元素是字典的列表) - 同时写入多行数据
-