zoukankan      html  css  js  c++  java
  • Week3-python笔记

    Week 3

    1 集合操作

    1.1 定义

    集合是一个无序的,不重复的数据组合,它的主要作用如下:

    • 去重,把一个列表变成集合,就自动去重了;
    • 关系测试,测试两组数据之前的交集、差集、并集等关系。

    1.2 常用操作

    list1 = [1,2,3,0,9,4,4,6,6,8,8]
    list2 = [1,4,6,8]
    list1 = set(list1)
    list2 = set(list2)
    print(list1,type(list1))  # 转为集合去重
    print(list1.intersection(list2))  # 交集 like '&',使用运算符两个type都是set
    print(list1.union(list2)) # 并集 like '|'
    print(list1.difference(list2)) # 差集 in list1 but not in list2 like '-'
    print(list1.symmetric_difference(list2)) # 对称差集 in list1 or in list2 but not both in list1 and list2 like '^'
    print(list1.issubset(list2)) # list1是否为list2的子集 like '<='
    print(list1.issuperset(list2)) # list1是否为list2的父集 like '>='
    print(list1.isdisjoint(list2)) # 不存在交集返回为ture

    list1 = set([1,2,3,0,9,4,4,6,6,8,8])
    list2 = set([1,4,6,8])
    list2.add(2)   # 添加
    list2.update([2,0,10]) # 添加多项
    print(list2)
    print(list1.remove(0)) # 指定存在元素删除
    print(list1.pop()) # 随机删除元素并返回
    print(list1.discard(10))  # 删除不存在元素不报错

    2 字符串(补充)

    定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串。

    特性:

    1.只能存放一个值

    2.不可变

    3.按照从左到右的顺序定义字符集合,下标从0开始顺序访问

    补充:
      1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r'l hf'
      2.unicode字符串与r连用必需在r前面,如name=ur'l hf'

    3 文件操作

    3.1 文件处理流程

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过句柄对文件进行操作
    3. 关闭文件
    #data = open("yesterday once more",encoding='utf-8').read()
    f =open('yesterday once more','r+',encoding='utf-8')   # 文件句柄,将打开的文件对象赋值给变量
    first_line = f.readline()
    print('first line:',first_line) # 读一行
    data = f.read() # 光标读完一次,光标在文件最后
    print(data)
    f.write('卡朋特乐队') 
    f.close() # 关闭文件

    3.2 文件打开模式

    打开文件的模式有:

    • r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
    • w,只写模式【不可读;不存在则创建;存在则清空内容】
    • x, 只写模式【不可读;不存在则创建,存在则报错】
    • a, 追加模式【可读;不存在则创建;存在则只追加内容】

    "+" 表示可以同时读写某个文件

    • r+, 读写【可读,可写】
    • w+,写读【可写,可读】
    • x+ ,写读【可读,可写】
    • a+, 写读【可读,可写】

     "b"表示以字节的方式操作

    • rb  或 r+b
    • wb 或 w+b
    • xb 或 w+b
    • ab 或 a+b

     注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码。

    3.3 其他操作

    f =open('yesterday once more','r+',encoding='utf-8')   # 文件句柄,将打开的文件对象赋值给变量
    f.seek(0)  # 重置文件光标
    f.tell() # 光标所在位置
    f.truncate(10) # 从10开始截断
    f.closed # 文件是否关闭
    f.readable() # 文件打开是否可读
    f.writable() # 文件打开是否可写
    f.flush() # 强制写入硬盘

    flush原理:

    1. 文件操作是通过软件将文件从硬盘读到内存;
    2. 写入文件的操作也都是存入内存缓冲区buffer(内存速度快于硬盘,如果写入文件的数据都从内存刷到硬盘,内存与硬盘的速度延迟会被无限放大,效率变低,所以要刷到硬盘的数据我们统一往内存的一小块空间即buffer中放,一段时间后操作系统会将buffer中数据一次性刷到硬盘);
    3. flush即,强制将写入的数据刷到硬盘。

    3.4 文件的修改 

    f = open('yesterday once more','r',encoding='utf-8')
    f_new = open('yesterday once more.bak','w',encoding='utf-8')
    
    for line in f:  # 可以用该语句循环读文件,不建议用readline
        if 'young' in line:
            line=line.replace('young','old')
        f_new.write(line)
    f.close()
    f_new.close()

     为了避免打开文件后忘记关闭,可以通过管理上下文,即:

    with open('log1') as obj1, open('log2') as obj2:

    4 字符转码

    msg = "你好,世界"
    msg_gbk = msg.decode("unicode").encode("gbk")
  • 相关阅读:
    关于Delphi中RS Float字段只有4位及OADateTime不能显示到秒的解决办法
    xml特殊字符处理(js)
    总结一下最近将163邮箱拖动效果改成兼容Firefox遇到的问题
    在XIB里面关于@property,@synthesize,release,dealloc的怪现象
    关于Core Data里面删除了一个被retain的NSManagedObject
    Hello cnblogs' world!
    html5离线应用程序 Amy
    css3布局相关的样式 Amy
    html5拖放API Amy
    css3MediaQueries的相关样式 Amy
  • 原文地址:https://www.cnblogs.com/cirr-zhou/p/8479010.html
Copyright © 2011-2022 走看看