• python之初级篇2


    一、数字类型

    1)整数 int 类型

        - bit_length()  # 查询以二进制表示一个数字的值所需的位数
        - int.from_bytes(bytes,byteorder)  # 返回给定字节数组所表示的整数。
        - int.to_bytes(length,byteorder)   # 返回表示整数的字节数组。

    2)浮点数  float 类型

        - is_integer # 如果浮点数是整数,则返回True
          collections:Python内建的一个集合模块,提供了许多有用的集合类。
        - Counter     # 是一个简单的计数器,例如,统计字符出现的个数:
        - OrderedDict # 可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key:
        - deque       # 是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
        - defaultdict # 使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict:

    二、集合

    1)集合的意义,使用。便于计算

    pythoners = ['张大炮','李二毛','王麻子','Lina','user']
    linuxers = ['wxx','sbsb','逗比','张三疯','Lina','user']
    pl = []
    for name in pythoners:
        if name in linuxers:
            pl.append(name)
    print(pl)

    可以理解为2列表的交集运算。集合可以专门计算这样的类型

    1)集合的运算

    1、 |        合集          ==>  intersection
    2、 &        交集          ==>  union
    3、 -        差集          ==>  difference
    4、^         对称差集      ==>   symmetric_difference
    5、>,>=      父集          ==>  issuperset
    6、<,<=      子集
    7、 ==       等于运算
    8、判断是否有共同部分    ==> isdisjoint  。有False,没有Frue
    pythoners = {'张大炮','李二毛','王麻子','Lina','user'}
    linuxers = {'wxx','sbsb','逗比','张三疯','Lina','user'}
    # 求交集
    print(pythoners & linuxers)
    print(pythoners.intersection(linuxers))
    # 求所有的元素,并集
    print(pythoners | linuxers)
    print(pythoners.union(linuxers))
    # 差集
    print(pythoners - linuxers)
    print(pythoners.difference(linuxers))
    # 对称差集
    print(pythoners ^ linuxers)
    print(pythoners.symmetric_difference(linuxers))
    print(len(pythoners ^ linuxers))
    # 等于运算 ==
    s1 = {1,2,3}
    s2 = {1,2,3}
    print(s1 == s2)
    # 父集
    s1 = {1,2,3}
    s2 = {1,2}
    print(s1 >= s2)
    print(s1.issuperset(s2))
    # 子集
    print(s2 <= s1)
    print(s2.issubset(s1))
    # 判断是否有共同部分,有False,没有true
    print(s1.isdisjoint(s2))
    View Code

     2)集合的方法

    update          是否更新原数据
    add             添加元素
    discard         删除元素,没有返回值,不存在不报错
    remove          删除元素,没有返回值,不存在报错
    pop             随机删除,有返回值
    clear           清空集合                  
    
    s1 = {'a','b','c'}
    s2 = {'b','d','f'}
    s1.difference_update(s2)    # 差集的结果赋值给了s1
    print(s1)
    s1 = {'a','b','c'}
    s1.add('d')
    print(s1)
    s1.discard('aaa')   # 删除,没有返回值,不存在不报错
    print(s1)
    
    s1.pop()    # 删除,随机删除,有返回值
    s1.remove('d')  # 删除,没有返回值,不存在报错
    print(s1)
    
    s1 = {'a','b','c'}
    s2 = {'b','d','f'}
    s1.update({3,4,5})
    print(s1)
    # 了解的内容
    # s1.clear()
    # s1.isdisjoint()
    # s1.issubset()
    # s1.issuperset()
    
    # 例题,去除下面的重复的内容
    names = ['user','sbsb','Lina','Lina','user']
    print(list(set(names)))
    #小结:用集合去重,局限性很强
    # 1、不能保证原数据类型的顺序
    # 2、原数据中包含的元素必须全部为不可变类型
    View Code

     3)集合的特征

    1、不可变类型
    2、元素不能重复
    3、无序
    

    4)例题,去除下面列表重复的内容

    l=[
        {'name':'egon','age':18,'sex':'male'}, 
        {'name':'alex','age':73,'sex':'male'},
        {'name':'egon','age':20,'sex':'female'},
        {'name':'egon','age':18,'sex':'male'},
        {'name':'egon','age':18,'sex':'male'},
    ]
    
    l=[
        {'name':'egon','age':18,'sex':'male'},
        {'name':'alex','age':73,'sex':'male'},
        {'name':'egon','age':20,'sex':'female'},
        {'name':'egon','age':18,'sex':'male'},
        {'name':'egon','age':18,'sex':'male'},
    ]
    # 版本一
    # s = set()
    # new_l = []
    # for d in l:
    #     values = (d['name'],d['age'],d['sex'])
    #     #print(values)
    #     if values not in s:
    #         s.add(values)
    #         new_l.append(d)
    # print(new_l)
    
    # 版本二
    # s = []
    # new_l = []
    # for d in l:
    #     if d not in s:
    #         s.append(d)
    #         new_l.append(d)
    # print(new_l)
    # 版本三
    s = []
    for d in l:
        if d not in s:
            s.append(d)
    print(s)
    示例

    5)集合常用操作归纳 set 类型

        - set1 = set({1, 2, 'barry'}) # 创建集合
        - set2 = {1, 2, 'barry'}      # 创建集合
        - add  # 将元素添加到集合中。如果元素已经存在,这不起作用。
        - del set1  # 删除集合- update # 迭代增加
        - clear  # 删除此集合中的所有元素
        - remove # 删除一个元素
        - pop    # 随机删除一个元素
        - issubset    # 子集
        - issuperset  # 超集
        - union  # 并集。(| 或者 union)
        - difference # 差集。(- 或者 difference)
        - intersection  # 交集。(&  或者 intersection)
        - isdisjoint    # 如果两个集合有一个空交点,则返回True
        - intersection_update  # 用它自己和另一个交集更新一个集合。
        - difference_update  # 删除另一个集合中本集合所拥有的所有元素
        - symmetric_difference  # 反交集。 (^ 或者 symmetric_difference)

    三、字符编码

    四、文件操作

    1)文件操作的关键字 open

    f=open(r'D:oldboyedumanth-01day3a.txt',mode='r',encoding='utf-8')  # 需要转义,前面需要加 r
    date = f.read()
    print(date)
    f.close()   # 回收操作系统打开的文件
    

     对一个文件操作,结束时,需要close。但这样往往会忘记写。即用下面个方法

    with open(r'D:oldboyedumanth-01day3a.txt',mode='r',encoding='utf-8') as f:
        data = f.read()
        print(data)
    with open('a.txt',mode='r',encoding='utf-8') as f,
        open('set1.py',mode='r',encoding='utf-8') as f1:
        data = f.read()
        print(data)
    

    2)文件的读模式 r 

    with open('a.txt',mode='r',encoding='utf-8') as f:
        # print('第一次
    ',f.read())     # read一次性把文件读取完,指针已经指向了文件末尾
        # print('第二次', f.read())
    
        # print(f.readline(),end='')   # 一行一行的读取
        # print(f.readline(),end='')
    
        for line in f:
            print(line,end='')
    
        # print(f.readlines())    #读取一行,变成列表  ['你好
    ', '哈哈哈给
    ', '好的啊']
    View Code

    3)文件的写模式 w

    # w 模式
    # 1、文件存在,则清空
    # 2、文件不存在,则创建
    with open('b.txt',mode='w',encoding='utf-8') as f:
        # f.write('你好啊,张山
    ')
        # f.write('你好啊,SB
    ')
    
        info = ['你好啊,张山
    ','你好啊,SB
    ','圆润的走开,SB
    ']
        # for line in info:
        #     f.write(line)
        f.writelines(info)
        f.write('a
    b
    c
    ')
    View Code

    4)只追加写模式  a

    # a : 只追加写模式,
    # 1、文件不存在如果不存在则创建
    # 2、文件存在,指针直接移动到文件末尾
    with open('b.txt',mode='a',encoding='utf-8') as f:
        f.write('55555
    ')
        f.write('494
    ')
    View Code

    5)控制文件读写单位的2种模式

    1、t : 默认的模式,也就被省略了。 但局限性强,只能用于文本文件,像图片,视频,就无法改模式
    2、b : 二进制模式,该模式下读写但都是bytes。该模式下不能指定encoding参数
    
    二进制读取图片,视频
    二进制读取图片,视频
    with open('1.jpg',mode='rb') as f:
        a = f.read()
        print(a)
    
    # 二进制读取文本文件,解码获取显示内容
    with open('a.txt',mode='rb') as f:
        a = f.read()
        print(a)
        print(a.decode('utf-8'))
    View Code
    二进制写入文本文件需要编码存入文本文件
    with open('a.txt',mode='wb') as f:
        f.write('你好aagagagagwg啊sb
    '.encode('utf-8'))
        f.write('你才wwwwwwsb
    '.encode('utf-8'))
    View Code

    6)复制文件

    import sys,os
    # print(sys.argv)
    src_file_path = sys.argv[1]
    if not os.path.isfile(src_file_path):
        print('文件不存在')
        sys.exit()
    dst_file_path = sys.argv[2]
    
    with open(r'%s' %src_file_path,'rb') as read_f,
        open(r'%s' %dst_file_path,'wb') as write_f:
        for line in read_f:
            write_f.write(line)
    View Code

    7)文件内容修改

    # 第一种覆盖写
    # with open('a.txt','rt+',encoding='utf-8') as f:
    #     f.seek(6)   # 移动的单位是字节
    #     f.write('[你是逗比]')   # 覆盖写
    
    # 第二种,读取文件的内容,修改字符串。第二次打开,以被赋值的字符串写入
    # 缺陷,文件过大,机器卡死
    
    # with open('a.txt','r',encoding='utf-8') as f:
    #     data = f.read()
    #     print(data)
    #     data=data.replace('武大郎','张全蛋')
    #     print(data)
    # with open('a.txt','w',encoding='utf-8') as f:
    #     f.write(data)
    
    # 第二种,一行一行的写入新文件,删除旧文件,重命名新文件
    import os
    with open('b.txt','r',encoding='utf-8') as f,
        open('a.txt.swap','w',encoding='utf=8') as f_new:
        for line in f:
            if '武藤兰' in line:
                line = line.replace('张全蛋','李狗蛋')
            f_new.write(line)
    os.remove('b.txt')
    os.rename('a.txt.swap','b.txt')
    View Code

     8)大文本读取方式

    with open('Dockerfile',mode='r',encoding='utf-8') as f:
        f.tell()
        f.read(50)
        for line in f:
            mylen = len(line.encode('utf-8'))
            line = line.strip()
            print(line)
    
    
  • 相关阅读:
    关于unbox.any castclass ldobj
    SQL 语句 之 增删改查 (一)
    .NET(C#):使用SmtpClient发送带有图片和附件的电子邮件
    Ext.Net 1.2.0_演示 Ext.Net+QRCode 封装条形码控件
    局域网共享打印机(不需要密码)
    Windows 2003单用户单会话登录远程桌面
    不过如此
    CellMerge
    Windows Server 2008服务器支持iso文件下载的方法
    SQL2008 Express 无法打开备份设备 '‘xxxxx'。出现操作系统错误 5(拒绝访问。)。BACKUP DATABASE 正在异常终止。
  • 原文地址:https://www.cnblogs.com/linu/p/8849413.html
Copyright © 2020-2023  润新知