zoukankan      html  css  js  c++  java
  • Day18&Day19 文件处理,迭代器生成器,三元表达式

    ###文件处理 

    f.open(‘chengli’,endcoding=‘utf-8’)

    data=f.read()

    print(data)

    f.close() 手动关

    文件没有修改一说,只有覆盖

    f.write()从光标处开始写

    with open(‘a.txt’,’w’) as data:

    with可以同时打开多个文件,用逗号隔开

    ###高级函数

    map

    reduce #from functools import reduce

    list=(‘123_sb’,34,’a’,’b’)

    filter(lambda x:x.endswith(“sb”),list) 

    f.flush() 刷新

    f.tell() 光标当前显示的位置

    #只有read(3)代表读取3个字符,其余的文件内光标移动都是以字节为单位,如seek,tell,readline,truncate

    newline=‘’读取文件中真正的换行符

    f.seek(0)用来控制光标的移动,0移动到首字节

    f.seek(10,1) #1表示基于相对位置seek,即上一次光标停止的位置,seek 10个字节文件必须以b模式打开

    f.seek(-10,2)#2表示逆序seek10个字节

    f.truncate()文件截断,文件必须以w方式打开

    data[-1]读取最后一行

    ###迭代器

    for,sum, min, max

    print(dir(x))

    x._iter_()变成可迭代对象,遵循迭代器协议,即可使用x._next_()

    ###生成器generator object

    自动实现了迭代器协议,生成器即为可迭代器,也可理解为一种数据类型

    生成器函数:

    yield语句得到返回值,即得到生成器

    def test()

          yield 1

          yield 2

          yield 3

    可yield多次

    yield可保留函数的运行状态,遇到yield的停留在执行完yield的位置

    可以在如:

    baozil=pro.g._next_()

    #加代码

    baozil= pro.g._next_()

    生成器表达式:

    三元表达式:例如: 

    ’if判断的返回值’ if name == ‘alex’ else ‘else的返回值’

    用for循环建列表:

    l = [i for i in range(10)] #一元

    l = [‘元素%s’ %i for i in range(10)] #二元

    l = [‘元素%s’ %i for i in range(10) if i>5] #三元

    三元表达式的缺点是只能生成列表,而且占内存,适合小数据

    laomuji = (‘鸡蛋%s’ %i for i in range(10))#生成器表达式

    print(laomuji._next_())  #或print(next(laomuji))

    生成器表达式比列表解析更节省内存

    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

    ###触发生成器运行的方法:

    t._next_()

    next(t)

    t.send(None )

    def test():

        print('开始了')

        first=yield 1

        print('第一次',first)

        yield 2

        print('第二次')

    t=test()

    res=t.__next__()

    print(res)

    t.send(None)#None是传值给yield,yield赋值给first,且函数停留在first的位置

    ###并发

  • 相关阅读:
    cf C. Vasya and Robot
    zoj 3805 Machine
    cf B. Vasya and Public Transport
    cf D. Queue
    cf C. Find Maximum
    cf B. Two Heaps
    cf C. Jeff and Rounding
    cf B. Jeff and Periods
    cf A. Jeff and Digits
    I Think I Need a Houseboat
  • 原文地址:https://www.cnblogs.com/xuwinwin/p/11297149.html
Copyright © 2011-2022 走看看