zoukankan      html  css  js  c++  java
  • 编码方式 集合 深浅拷贝 文件操作

    今天主要学习内容如下:

    1.Python2和python3的不同点

    # python2
    #
    # print 'shs'
    # xrange()
    # raw_input()
    #
    # python3
    # print('shj')
    # input()
    # range()
    View Code

    2.小数据池概念和is与==的不同

    # is 比较的是内存地址(即id)
    # ==比较的是值是否相等
    
    # a = 1
    # b = a
    # print(a == b)
    # print(id(a) == id(b))
    ##数字,字符串 小数据池
    #数字的范围 -5 -- 256
    #字符串:1,不能有特殊字符
    # 2,s*20 还是同一个地址,s*21以后都是两个地址
    #
    # a = 300
    # b = 300
    # print(a == b)
    # print(id(a) is  id(b))
    # print(id(a),id(b))
    
    # a = 'ssgd#d'
    # b = 'ssgd#d'
    # print(a is b)
    
    #剩下的 list dict tuple set 没有小数据池的概念,都是2个内存地址
    a = [1,2]
    b = [1,2]
    print(a is b)
    View Code

    3.编码方式

    ascii
    A : 00000010 8位 一个字节

    unicode A : 00000000 00000001 00000010 00000100 32位 四个字节
    中:00000000 00000001 00000010 00000110 32位 四个字节


    utf-8 A : 00100000 8位 一个字节
    中 : 00000001 00000010 00000110 24位 三个字节


    gbk A : 00000110 8位 一个字节
    中 : 00000010 00000110 16位 两个字节
    1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
    2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等)

    python3的编码方式
        str 在内存中是用unicode编码。
    bytes类型
    对于英文:
    str :表现形式:s = 'alex'
    编码方式: 010101010 unicode
    bytes :表现形式:s = b'alex'
    编码方式: 000101010 utf-8 gbk。。。。

    对于中文:
    str :表现形式:s = '中国'
    编码方式: 010101010 unicode
    bytes :表现形式:s = b'xe91e91e01e21e31e32'
    编码方式: 000101010 utf-8 gbk。。。。

    # # 编码方式python3
    # s1 = 'shang'
    # s2 = b'shang'
    # print(type(s1),type(s2))#<class 'str'> <class 'bytes'>
    
    s1 = ''
    # s2 = b'上'
    # print(type(s1),type(s2))
    print(type(s1))
    print(s1.encode('gbk'))
    print(s1.encode('utf-8'))
    View Code

    4.做了2道练习题

    #
    # 1、元素分类
    #     有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    # 即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
    #
    # dic = {'key1':[],'key2':[]}
    # li=[11,22,33,44,55,66,77,88,99,90]
    # for i in li:
    #     if i<=66:
    #         dic['key1'].append(i)
    #     else:
    #         dic['key2'].append(i)
    # print(dic)
    #
    
    
    # 2、输出商品列表,用户输入序号,显示用户选中的商品
    #     商品 li = ["手机", "电脑", '鼠标垫', '游艇']
    # 要求:1:页面显示 序号 + 商品名称,如:
    #           1 手机
    #            2 电脑
    #
    #      2: 用户输入选择的商品序号,然后打印商品名称
    #   3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    # 4:用户输入Q或者q,退出程序。
    
    print('欢迎光临,商品如下')
    li = ["手机", "电脑", '鼠标垫', '游艇']
    s=[]
    for index,name in enumerate(li):
        print(str(index) + '     '+name)
    while 1:
    
        num = input('请输入要购买的商品编号:')
        if num == 'q' or num=='Q':
    
            break
        elif int(num) >= 0 and int(num) <= len(li):
            s.append(li[int(num)])
            for i in s:
                print('已购买'+'        '+i)
    
        else:
            print('输入有误,请重新输入')
    View Code

     5.集合set的增删改查

    #集合:可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复。
    
    # set = {1,2,3}
    # set = {1,[1,23]}#TypeError: unhashable type: 'list'
    # set = {'name','jsh','djdf','jd'}
    #
    # #增,删
    # set.add('sdd')
    # print(set)
    # set.update('sdhhh')#{'jsh', 'h', 's', 'd', 'jd', 'djdf', 'name', 'sdd'}
    # print(set)
    # print(set.pop())#随机删除
    # print(set.clear())
    # print(set)
    # del set
    # # print(set)
    # # set.clear()
    # # print(set)
    #
    #
    # #集合的交集,并集,反交集,差集
    # s1={1,2,3,4,5}
    # s2={2,3,4,5,6}
    # print(s1&s2)
    # print(s1.intersection(s2))
    # print(s1|s2)
    # print(s1.union(s2))
    # print(s1^s2)
    # print(s1.symmetric_difference(s2))
    # print(s1-s2)
    # print(s1.difference((s2)))
    # print(s1 < s2)
    # print(s1.issubset(s2))  # 这两个相同,都是说明set1是set2子集。
    #
    # print(s2 > s1)
    # print(s2.issuperset(s1))
    #  这两个相同,都是说明set2是set1超集。
    
    
    #利用集合去重
    li = [1,22,3,34,4,4,5,5,5,7,8]
    s=set(li)
    # print(s)
    # print(list(s))
    
    
    # frozenset不可变集合,让集合变成不可变类型。
    s1=frozenset(s)
    # print(s1,type(s1))
    # for i in s1:
    #     print(i)
    # # s1.add(5)
    # # print(s)
    View Code

     6.基础数据类型汇总

    # str
    
    # s=' '
    # print(s.isspace())
    
    # list
    
    # li = [1,2,2,3,4,5,6]
    # # print(len(li))
    # # for i in li:
    # #     print(i)
    # # for i in range(len(li)):
    # #     del li[i]
    #
    # print(li.index(5))
    
    # # Python 字典 fromkeys() 函数用于创建一个新字典
    # # dic = {'1':'sss','2':'slss','3':'kss','4':'psss'}
    # dic = dict.fromkeys([1,2,3],'春哥')
    # print(dic)#{1: '春哥', 2: '春哥', 3: '春哥'}
    #
    
    
    
    # # dic = {'1':'sss','2':'slss','3':'kss','4':'psss'}
    # dic = dict.fromkeys([1,2,3],[])
    # dic[1].append(5)
    # # # # # dic[1]=5
    # # # dic[2].extend('ghh6')
    # # dic[3].extend('ghh6')
    # print(dic)
    #
    
    # l1 = []
    # l2 = l1
    # l3 = l1
    # l3.append('a')
    # print(l1,l2,l3)
    #
    # #
    # dic = {'k1':'v1','k2':'v2','a3':'v3'}
    # # dic1 = {}
    #
    # for i in dic:
    #     if 'k' not in i:
    #         # dic1.setdefault(i,dic[i])
    #         dic1[i]=dic[i]
    #
    # dic = dic1
    # print(dic)
    
    #元祖  如果元祖里面只有一个元素且不加,那此元素是什么类型,就是什么类型。
    # tu1 = (1)
    # tu2 = (1,)
    # print(tu1,type(tu1))1 <class 'int'>
    # print(tu2,type(tu2))(1,) <class 'tuple'>
    #
    View Code

    7.深浅拷贝

    #对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。
    
    # l1 = [1,2,3,['sf','hdfd']]
    # l2 = l1
    # l1[0] = 11
    # print(l1,l2)
    #
    
    #浅拷贝copy。对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
    # l1 = [1,2,3,['sf',['hdfd','hh']]]
    # l2 = l1.copy()
    # # print(l1,l2,id(l1),id(l2))
    # # l1[0] = 11
    # # print(l1,l2,id(l1),id(l2))
    # # # l1[3][1] = 'dd'
    # # # print(l1,l2,id(l1),id(l2))
    # l1[3][1][0]= 'dd'
    # print(l1,l2,id(l1),id(l2))
    
    # 深拷贝deepcopy。对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
    import copy
    l1 = [1,2,3,['sf',['hdfd','hh']]]
    l2 =copy.deepcopy(l1)
    # print(l1,l2,id(l1),id(l2))
    # l1[0] = 11
    # print(l1,l2,id(l1),id(l2))
    l1[3][1] = 'dd'
    print(l1,l2,id(l1),id(l2))
    # l1[3][1][0]= 'dd'
    # print(l1,l2,id(l1),id(l2))
    View Code

    8.文件操作

    以什么编码方式储存的文件,就以什么编码打开进行操作。

    # f = open(r'c:usersSZLIBDesktops.txt',mode='r',encoding='utf-8')
    # content = f.read()
    # print(content)
    # f.close()
    
    # f = open('dfsfs',mode='r',encoding='utf-8')
    # content = f.read()
    # print(content,type(content))
    # f.close()
    
    # f = open('dfsfs',mode='rb')
    # content = f.read()
    # print(content,type(content))
    # f.close()
    
    # f = open('chun',mode='w',encoding='utf-8')
    # f.write('dgdgdgd')
    # f.close()
    
    
    # f = open('ch',mode='w')
    # f.write('dgdg')
    # f.close()
    
    f = open('un',mode='wb')
    f.write('dgdd'.encode('utf-8'))
    f.close()
    View Code



  • 相关阅读:
    Mysql:为什么用limit时,offset很大会影响性能
    [解决方案]未能找到路径“~in oslyncsc.exe”的一部分
    [经验分享]NuGet发布自己的Dll(类库包)
    [解决方案]使用百度富文本编辑器,编辑显示不了内容
    [解决方案]未能加载文件或程序集
    [经验分享]WebApi+SwaggerUI 完美展示接口
    [经验分享]Linux网络连接-VMware+CentOS 7
    [经验分享]WebAPI中返回类型JsonMessage的应用
    [解决方案]WebAPI+SwaggerUI部署服务器后,访问一直报错的问题
    [解决方案] 当 IDENTITY_INSERT 设置为 OFF 时
  • 原文地址:https://www.cnblogs.com/shangchunhong/p/9212615.html
Copyright © 2011-2022 走看看