美文网首页
【python】零散的学习笔记

【python】零散的学习笔记

作者: 吵吵人 | 来源:发表于2018-10-23 22:06 被阅读0次

    1. 获取当前工作空间、修改路径

    import os
    os.getcwd() #显示结果'C:\\Windows\\system32'
    os.chdir('E:\\MachineLearning\\machinelearninginaction\\Ch04')
    

    2. 如何加载自定义的py文件

         比如我自定义了一个叫“operator.py”的文件,加载的办法为:将这个文件放置在python安装目录的Lib文件夹下,然后直接import operator即可。

    3. 读取文件生成二维列表的方法

         注意以下两者的区别:
         for i in range(len(dataset))      #i是一个整型
         for i in dataset      #如果是文本数据,i是其中的一行

    4. A=B

         无论是什么类型,直接用A=B,A和B都会指向同一个地址空间,无论改变哪一个另外一个都会发生改变

    5. ASCII码

         数字48(0)——57(9)
         字母65(A)——90(Z)
                97(a)——122(z)

    6.中文乱码的问题

         改文件编码方式为utf-8,在打开文件的时候(python3),要加上第三个参数encoding=‘utf8’。


         读取文件首行多了"\ufeff"字符串问题的解决办法:第三个参数encoding=‘utf8’改为encoding='utf-8-sig’,简单理解为忽略utf编码文件的编码信息声明。
         其他问题可参考:https://www.cnblogs.com/mingjiatang/p/4890420.html

    7. 读写文件小结

    以读取CSV文件为例


    文件内容截图

    打开文件
    用with open(……) as ……的打开方式是为了自动调用f.close(),保证无论是否出错都能正确地关闭文件。

    with open('E:/AreaRect/data.csv', 'r') as f:
        print(f.read())
    

    结果


    读取数据
    python文件对象提供了三个“读”方法: read()、readline() 和 readlines()

    • read()——每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。
    • readlines() ——一次读取整个文件,自动将文件内容分析成一个行的列表。
    • readline() ——每次只读取一行,通常比readlines() 慢得多。

    输入

    users=[]
    pay=[]
    rest=[]
    
    with open('E:/AreaRect/data.txt', 'r',encoding='utf-8-sig') as f:
        for line in f.readlines():
            line=line.rstrip('\n').split(',\t')
            users.append(line[0])
            pay.append(line[1])
            rest.append(line[2])
    

    输出


    写入数据
    • write()——和read对应
    • writelines()——和readlines()对应,不会自动写入换行符
      写入
    with open('E:/AreaRect/dataNew.txt', 'w+') as f:
        f.writelines(users)
    

    结果



    写入

    with open('E:/AreaRect/dataNew.txt', 'w+') as f:
        for i in range(len(users)):
            f.write(users[i]+',')
            f.write(str(pay[i])+',')
            f.write(str(rest[i])+'\n')
    

    结果


    8. 生成值全为0的列表

    A = [0 for _ in range(len(B))]
    

    9. yield关键字

    以生成斐波那契数列为例,输入如下代码

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    def fab(max): 
        n, a, b = 0, 0, 1 
        while n < max: 
            yield b      # 使用 yield
            a, b = b, a + b 
            n = n + 1
     
    for n in fab(5): 
        print(n)
    
    

    结果

    简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,直到再次遇到 yield。

    要注意区分 fab 和 fab(5),fab 是一个 generator function,而 fab(5) 是调用 fab 返回的一个 generator,好比类的定义和类的实例的区别。

    相关文章

      网友评论

          本文标题:【python】零散的学习笔记

          本文链接:https://www.haomeiwen.com/subject/emdzzftx.html