day19-三大神器和csv操作

day19-三大神器和csv操作

1、迭代器
  • 什么是迭代器

    迭代器是容器型数据类型
    特点:无法通过打印迭代器查看元素,也无法统计元素个数;
          需要使用元素的时候必须将元素从迭代器中取出,取出以后该元素就从迭代器中消失
    
  • 创建迭代器(只能进行转换) - 将其他序列转换成迭代器

  • 获取迭代器元素

    • 不管以什么的方式获取到了迭代器的元素,被获取到的元素一定会从迭代器中消失
    • 1)获取单个元素:next(迭代器)
    • 一次只能取一个,下一次就是取第二个
    • 2)遍历 - 支持for in 操作
2、生成器
  • 什么是生成器
生成器是一种容器,但是这个保存的不是多个数据,而是生产(创建)多个数据的算法。
同时具有迭代器保存数据的特点:1、打印看不到内容 2、不能统计个数,不支持len操作 3、元素也是取一个就少一个,而且不能再放回生成器中

注意:生成器获取元素和迭代器获取元素的方法一样
  • 创建生成器
调用一个带有yield关键的函数就可以得到一个生成器

注意:如果函数中有yield,那么这个将函数不会执行函数体,也不会获取函数返回值,而是创建一个生成器对象。
  • 控制生成器产生数据的个数和值

    • 生成器产生数据的个数和值由执行函数体的时候会遇到几次yield,以及每次遇到yield的时候的值来确定
  • 生成器创建数据的原理

​ 调用函数创建生成器的时候不会执行函数体,在通过生成器对象获取生成器中元素的时候才会执行函数,而且每次在执行函数体的时候只会执行到yield就会停止,并且会记录停止位置;在下次获取生成器元素的时候就会从停止位置开始获取。

3、装饰器
  • 装饰器是用来给函数添加功能

  • 写装饰器的套路

    """
    def 装饰器名(f):
        def new_f(*args, **kwargs):
            实现新增的功能
            result = f(*args, **kwargs)
            实现新增的功能
            return result
        return new_f
    """
    
4、csv文件
  • csv文件(逗号分隔值文件) - 让数据以表格的方式存储(更简单的表格文件)

  • 1、csv文件读操作

  • 方法1 - 读文件内容得到一个迭代器,迭代器中的元素是每一行内容对应的列表

  • a、创建reader对象:csv.reader(文件对象) - 创建文件对应的reader,并且获取文件内容

  • 注意:打开csv文件的时候需要给参数newline赋值为空串

  • b、通过reader对象(本质是一个迭代器)获取文件内容

  • 方法2 - 读文件内容得到一个迭代器,迭代器中的元素是每一行内容对应的字典(键是每一列的第一行数据)

  • 2、csv文件写操作

  • 方法1 - 以列表为单位写入一行数据

  • a、创建writer对象:csv.writer(文件对象)

  • b、写入数据

  • writer对象.writerow(列表) - 一次写入一行数据

  • writer对象.writerows(元素是列表的列表) - 同时写入多行数据

  • 方法2 - 以字典为单位写入一行数据

  • a、创建DictWriter对象:csv.DictWriter(文件对象,字典的键)

  • b、将字典中的键作为文件内容写入文件第一行

  • c、写入数据

  • writer对象.writerow(字典) - 一次写入一行数据

  • writer对象.writerows(元素是字典的列表) - 同时写入多行数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泥地进击的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值