zoukankan      html  css  js  c++  java
  • python基础(集合,文件操作)

    一.集合(set)

    集合:1.无序的,不重复的

       2.他里面的元素必须是可哈希的. int str bool () ,但是它本身是不可哈希的.

         3.集合不能更改里面的元素

         4.集合可以求交集,并集,差集,反交集等.

    1.集合的创建

    set1 = set({1,2,'alex'})
    set2 = set1
    print(set1,set2)
    # 输出结果:{1, 2, 'alex'} {1, 2, 'alex'}

    2.集合的增(2种方式)

    1.set1.add()(直接增加)
    set1 = {1,3,'alex',2}
    # set1.add('taibai')
    # print(set1)
    # 输出结果:{1, 2, 3, 'taibai', 'alex'}
    
    2.set1.update()(迭代增加)
    set1.update('abc')
    print(set1)
    # 输出结果:{1, 2, 3, 'c', 'b', 'a', 'alex'}

    3.集合的删(4种方式)

    set1 = {1,3,'alex',2}
    
    1.set1.pop()   (随机删除,所以()内不用写)
    set1.pop()
    print(set1)
    
    2.set1.remove(2)  (删除元素)
    print(set1)
    
    3.set.clear()   (清空集合)
    set1.clear()
    print(set1)
    输出结果:set()
    
    4.del set1(删除集合)

    4.集合的查

    通过for循环查找

    set1 = {1,3,'alex',2}
    for i in set1:
        print(i)

    5.集合的其他操作

      5.1交集  ( & 或者 intersection)

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 & set2)                 #{4, 5}
    print(set1.intersection(set2))

      5.2并集  ( |  或者 union)

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 | set2)                 #{1, 2, 3, 4, 5, 6, 7, 8}
    print(set1.union(set2))

      5.3差集  ( -  或者 difference )

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 - set2)                 #{1, 2, 3}
    print(set1.difference(set2))

      5.4反交集  ( ^  或者symmetric_difference)

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 ^ set2)                           #{1, 2, 3, 6, 7, 8}
    print(set1.symmetric_difference(set2))

      5.5超集,子集

    set1 = {1,2,3,4,5}
    set2 = {4,5}
    print(set1 > set2)                             #True
    print(set1.issuperset(set2))
    
    print(set2 < set1)                             #True
    print(set2.issubset(set1))

    这两个相同,都是说明set1是set2的超集。set2是set1的子集

    6.frozenset()

    不可变集合,让集合变成不可变类型。

    set1 = {1,2,3,4,5}
    s = frozenset(set1)                #frozenset({1, 2, 3, 4, 5})
    print(s)

    二.文件操作

    1.文件操作基本流程

    f = open('F:day8.txt',encoding='utf-8',mode='r')
    # 变量:f f_obj,obj,file_hl file_hanlder 文件句柄          open 他是windows系统的命令
    # 'F:day8.txt' 文件路径       encoding='utf-8'   编码方式                   r:只读
    content = f.read()
    print(content)
    f.close()        #将你这文件句柄,或者是动作关闭,节省内存

    2.文件的打开模式

    2.1读

    2.1.1只读  (r,rb,r+)(5种方法)

    1.  f.read()   全部读出来

    f = open('asdf','r',encoding='utf-8')
    content = f.read()
    print(content)        #输出结果:qweasdzxc
    f.close()

    2.  f.read(n)  n是按照字符读出来的个数

    f = open('asdf',encoding='utf-8')
    content = f.read(3)
    print(content)       #输出结果:qwe
    f.close()

    3.  readline()    按行读出来,

    f = open('asdf',encoding='utf-8')
    content = f.readline()
    print(content)
    line1 = f.readline()
    print(line1)
    f.close()

    4.  readlines()   

    f = open('asdf',encoding='utf-8')
    content = f.readlines()
    print(content)         输出结果:['中国
    ', 'qweasdzxc']
    f.close()

    5.   for 循环

    f = open('asdf',encoding='utf-8')
    for i in f:
        print(i)
    f.close()

    r+ 就是先读后写,在读的基础上加上f.write() ,在关闭文件

    rb对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)

    与r的区别在于 f 中不用输入encoding=' ',其中f.read(n)中n代表字节


    bytes ---> str
    # s = b'xe4xb8xb0xe5x8e'.decode('utf-8')

    2.2  写write(w , w+ ,wb)

    write如果没有文件,则创建文件写内容, 如果有文件则将原文件内容全部删除,在写.

    f = open('asdf','w',encoding='utf-8')
    content = f.write('mnbvcxy')       
    f.close()

    w+ 是先写后读,写完之后光标在最后位置,读不出来

    wb 是写的bytes类型。与w的区别在于 f 中不用输入encoding=' ',其中写入的是编码类型,表现出的是对应的英文或者中文

    2.3追加

    只追加  a,ab

    f = open('asdf','a',encoding='utf-8')
    content = f.write('aaaa')
    f.close()

    ab是追加的bytes类型。与a的区别在于 f 中不用输入encoding=' ',其中写入的是编码类型,表现出的是对应的英文或者中文

    追加可读 a+,a+b

    f = open('asdf','a+',encoding='utf-8')
    content = f.write('aaaa')
    f.seek(0)
    print(f.read())
    f.close()

    a+b是追加可读的bytes类型。与a+的区别在于 f 中不用输入encoding=' ',其中写入的是编码类型,表现出的是对应的英文或者中文

    2.4文件的操作方法

    常用方法: 

    read readable readline readlines for 循环
    seek tell write writeable

    View Code

    3.with的用法

    with open('log','r',encoding='utf-8') as f1,
            open('log1','r',encoding='utf-8') as f2:
        print(f1.read())
        print(f2.read())

    4.改动文件

    1)创建一个新文件.

    2)读取原文件

    3)将原文件的内容通过想用的方式进行更改,并写入新文件

    4)将原文件删除

    5)将新文件重命名为原文件名

    # 1,创建一个新文件.
    # 2,读取原文件.
    import os
    with open('log',encoding='utf-8') as f1,
        open('log.bak','w',encoding='utf-8') as f2:
    # 3,将原文件的内容通过你想要的方式进行更改,并写入新文件件.
        old_content = f1.read()
        new_content = old_content.replace('alex','SB')
        f2.write(new_content)
    #4,将原文件删除.
    os.remove('log')
    #5,将新文件重命名原文件名.
    os.rename('log.bak','log')
    
    
    import os
    with open('log',encoding='utf-8') as f1,
        open('log.bak','w',encoding='utf-8') as f2:
        for i in f1:
            i = i.replace('alex','SB')
            f2.write(i)
    os.remove('log')
    os.rename('log.bak','log')
    View Code

     

  • 相关阅读:
    hdu1561--树形dp<依赖背包>
    hdu--1520--树形dp<写起来就是深搜啊>-<滚动数组优化>
    hdu--1595-另类最短路
    hdu--1599--最小环<会加深你对floyd的理解>
    hdu--1851--尼姆博弈&&巴什博弈<也有人用了sg可惜我还不懂>
    hdu--4920--原来一直写了速度慢的矩阵乘法
    hdu--4912--终于解脱了
    hdu--4947--我太天真了
    hdu--2576--高中数学..
    hdu--2579--第二次与女孩的约会
  • 原文地址:https://www.cnblogs.com/zhuzhaoyang/p/8386192.html
Copyright © 2011-2022 走看看