day19迭代器,生成器,装饰器和csv文件操作

day19迭代器,生成器,装饰器和csv文件操作

一、迭代器

1.什么是迭代器(iter)

迭代器是容器型数据类型

特点:无法通过打印迭代器查看元素,也无法统计元素个数;

需要使用元素的时候,必须将元素从迭代器中取出,而且取出以后该元素就会从迭代器中消失

2.创建迭代器 —— 将其他序列转换成迭代器

i1 = iter('hello')
i2 = iter([10,20,30,40,50,60])
i3 = iter({'1':2,'2':3})
print(i1,type(i1))#<str_iterator object at 0x000001DE866C0C10> <class 'str_iterator
print(i2,type(i2))#<list_iterator object at 0x000001DE866C0B80> <class 'list_iterator'>

3.获取迭代器的元素

不管以什么方式取到了迭代器的元素,被获取到的元素一定会从迭代器中消失

1)获取单个元素next(迭代器)

i2 = iter([10,20,30,40,50,60])
print(next(i2))#10
print(next(i2))#20
print(next(i2))#30
print(next(i2))#40
print(next(i2))#50
print(next(i2))#60
print(next(i2))  #StopIteration  迭代器中的元素已经空了

2)遍历

i2 = iter([10,20,30,40,50,60])
for x in i2:
    print(x)
print(list(i2))#[]   遍历完了之后在打印迭代器中的值,已经为空
二、生成器

1.什么是生成器

生成器是一种容器,但是这个保存的不是多个数据,而是产生(创建)多个数据的算法,同时具有迭代器保存数据的特点:

1)打印看不到内容

2)不支持len操作

3)元素也是取一个少一个,而且不能放回生成器中

注意:生成器获取元素和迭代器获取元素的方法一样

2.创建生成器

调用一个带用yield关键函数就可以得到一个生成器对象

注意:如果函数中有yield,那么调用这个函数不会执行函数体,也不会获取函数返回值,而是创建一个生成器对象

练习:创建学科学号的生成器,能产生从python001到python999的学号
def student_num():
    for x in range(1, 1000):
        yield f'python{x:0>3}'
print(list(student_num()))#['python001', 'python002', 'python003', 'python004'....]

3.控制生成器产生数据的个数和值

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

4.生成器创建数据的原理

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

三、装饰器

1.装饰器用来给函数添加功能

1)通过直接修改原函数的代码可以给函数添加功能

存在问题:a.如果多个函数需要添加同样的功能,需要修改多个函数代码,并且添加相同的代码

b 如果想要取消添加的功能,又要重新修改多个函数的函数

mport time


def func1():
    start = time.time()
    print("执行时间需要多久")
    end = time.time()
    print(f'执行时间:{end - start}')

2)使用装饰器

def count_time(f):
    def new_f(*args, **kwargs):
        start = time.time()
        result = f(*args, **kwargs)
        end = time.time()
        return result

    return new_f()

@count_time
def func1():
    print("执行时间需要多久")

四、csv文件操作

csv文件(逗号分隔值文件) - 让数据以表格的方式存储(更简单的表格文件)

1.csv文件读操作

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

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

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

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

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

csv.DictReader(文件对象)


f = open('D:/Python2201数据分析/2018年北京积分落户数据.csv', encoding='utf-8', newline='')
read1 = csv.DictReader(f)
print(list(read1))#打印值是一个字典

2.csv文件写操作

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

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

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

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

writer1 = csv.writer(open('file/students.csv', 'w', encoding='utf-8', newline=''))
writer1.writerow([1, 'name', 'tel', 'score'])
writer1.writerow([2, '小明', '1234', '89'])

2)方法2:以字典为单位写入一行数据

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 通达信是一款常用的股票分析软件,其保存的日线数据文件格式为day文件。而csv文件是一种常见的数据文件格式,可以在不同的软件和工具之间交换和共享数据。 将通达信的day文件转换为csv文件可以通过以下步骤完成: 1. 打开通达信软件,并选择要转换的股票或指数的日线数据。 2. 在通达信软件中找到“导出”或“另存为”等选项,选择将数据导出为文本文件。 3. 在弹出的保存对话框中,选择保存为txt格式,以便后续处理。 4. 使用文本编辑(如记事本、Sublime Text等)打开保存的txt文件。 5. 检查txt文件的格式,通达信的day文件通常包含日期、开盘价、最高价、最低价、收盘价等信息,每个数据之间用制表符或空格分隔。 6. 检查并调整txt文件的编码,确保其与要求的csv文件编码一致(如UTF-8)。 7. 在文本编辑中选择“另存为”选项,并将文件格式选择为csv格式。 8. 保存文件,并选择适当的文件名和存储位置。 转换完成后,您就可以使用支持csv文件格式的软件(如Microsoft Excel、Python pandas库等)进行进一步的数据分析、可视化或处理。 需要注意的是,转换过程中可能需要根据具体的数据格式和软件要求进行一些调整和处理,例如处理日期格式、缺失值等。此外,如需处理多只股票或指数的数据,需要对每一个day文件进行转换。 ### 回答2: 通达信day文件是一种历史股票数据文件格式,包含了股票的高、低、开、收、成交量等信息。而CSV文件是一种以逗号分隔值的文本文件,用于储存简单的表格数据。如果想将通达信day文件转换为CSV文件,可以按照以下步骤操作。 首先,需要打开通达信软件,并选择要导出的历史数据。通达信软件提供了数据导出的功能,可以通过菜单或快捷键找到导出选项。 接下来,选择导出文件的路径和名称。通常可以选择将导出的CSV文件保存在本地计算机的某个文件夹中。 然后,在导出选项中选择CSV文件作为导出的文件格式。通常可以在导出选项中看到支持的文件格式,选择CSV文件即可。 最后,点击导出按钮,等待一段时间,通达信软件将会自动将day文件转换为CSV文件,并保存在之前选择的路径中。 转换完成后,可以在保存的路径中找到生成的CSV文件。可以使用文本编辑或者电子表格软件打开CSV文件,查看其中的股票历史数据,包括日期、开盘价、收盘价、最高价、最低价等。 需要注意的是,不同版本的通达信软件可能略有差异,具体的操作步骤可能会有所不同。如果对于软件操作不熟悉,可以参考软件的帮助文档或者寻求专业人士的帮助。 ### 回答3: 通达信day文件是一种常见的股票数据文件格式,而CSV文件是一种常用的数据存储格式。将通达信day文件转换为CSV文件可以方便地对股票数据进行处理和分析。 通达信day文件通常以“day”为后缀名,包含股票的每日交易数据,如开盘价、收盘价、最高价、最低价、成交量等。而CSV文件以逗号分隔不同的数值,并且可以直接在电子表格软件中打开和编辑。 要进行转换,首先需要打开通达信软件,选择相应的股票数据文件。然后在数据菜单中选择“导出数据”选项,并选择CSV格式。接下来,在弹出的导出设置窗口中,可以选择需要导出的数据类型、导出起止日期等,并点击“确认”按钮。 此时,通达信软件会自动生成相应的CSV文件,保存在指定的路径下。打开生成的CSV文件,可以使用电子表格软件(如Excel)打开和编辑,方便进行数据处理和分析。在CSV文件中,每一行代表一条股票交易数据,各个数据字段以逗号分隔。 总结而言,将通达信day文件转换为CSV文件,可以通过通达信软件进行操作,选择导出数据的格式为CSV,然后软件会自动生成对应的CSV文件,方便进行后续的数据处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值