• 编码,数据类型补充,深浅copy


                             编码延伸
    #is 判断内存id是否相同。
    #==判断的是数值是否相同。
    #id 测试他的内存地址。
    #小数据池:
    # int:-5~256
    # str:只包含数字或者字母元素。
    # 单个字母*int(20以内)存在小数据池的概念。
    # 编码:
    # ASCII:数字,字母,特殊字符。
    # A:0000 0010
    # unicode:万国码。
    # A:0000 0000 0000 0101 0000 0101 0000 0101
    # 中:0000 0000 0000 1101 0000 0000 0000 1101
    # 升级:
    # utf-8:最少用8位表示一个字符。
    # A:0000 0010
    # 欧洲:0000 0010 0000 0010
    # 中:0000 0000 0000 1101 0000 0000
    #
    # gbk:国标,数字,字母,特殊字符,中文。
    # A:0000 0010
    # 中:0000 0000 0000 1101
    # 不同编码之间不能互相识别。
    # 在文件的存储或传输,编码是除unicode以外的任意编码
    #
    #
    # python 3X
    # str: 内部编码方式unicode:
    # bytes:内部编码方式 非unicode
    # 英文:
    # str:内部编码方式unicode
    # 表现形式:name='alex'
    # bytes:内部编码方式 非unicode
    # 表现形式:name=b'alex'
    # 中文:
    # str:内部编码方式 unicode
    # 表现形式:name='中国'
    # bytes:内部编码方式 非unicode
    # 表现形式 name = b'xe2xe2xe2xe2xe2xe2'

    # str--->bytes
    # b1=str.encode('utf_8')
    # bytes--->str
    # s1=bytes.decode('utf_8')
    #数据类型的补充:

    # s1='中国'
    # b1=s1.encode('utf_8')
    # print (b1)
    #utf_8 bytes---->gbk bytes
    # s2=b1.decode('utf_8')
    # print (s2)
    # b2=s2.encode('gbk')
    # print (b2)
    #数据类型的补充
    #1,元组
    # tu1=('laonanhai')
    # tu2=('laonanhai',)
    # print(tu1,type(tu1))
    # print(tu2,type(tu2))
    #
    # tu1=(1)
    # tu2=(1,)
    # print(tu1,type(tu1))
    # print(tu2,type(tu2))

    #元组里面如果只有一个元素且没有逗号,则该数据的数据类型与里面的元素相同.
    # tul=([1,2,3])
    # tu2=([1,2,3,],)
    # print(tu1,type(tu1))
    # print(tu2,type(tu2))

    #list
    # l1=[111,222,333,444,555,]
    #索引为奇数对应的所有元素全部删除.
    #方法一:
    # del l1[1::2]
    # print(l1)
    #方法二错误展示:
    # for index in range(len(l1)):
    # print('删除之前的index:%s' % index)
    # print('删除之前的l1:%s' % l1)
    # if index % 2 ==1:
    # del l1[index]
    # print('删除之后的index:%s' % index)
    # print('删除之后的l1:%s' % l1)
    # print(l1)
    #在循环一个列表时,最好不要改变列表的大小,会影响你的最终结果.
    #倒着删除
    # for index in range(len(l1)-1,-1,-1):
    # if index % 2 ==1:
    # del l1[index]
    # print(l1)

    #dict
    # dic=dict.fromkeys('abc',666)
    # print(dic)
    # dic=dict.fromkeys([11,22,44,33],666)
    # print(dic)
    # dic=dict.fromkeys([1,2,3],[])
    # dic[1].append(666)
    # print(dic)
    #在循环dict中,最好不要改变dict的大小,会影响结果或者报错.
    #错误展示:
    #dic={'k1':'v1','k2':'v2','k3':'v3','name':'alex'}
    # for i in dic:
    # if 'k'in i :
    # del dic[i]
    # print(dic)
    # l1=[]
    # for key in dic :
    # if 'k' in key:
    # l1.append(key)
    # print(l1)
    # for key in l1:
    # del dic [key]
    # print(dic)

    # 数据类型的转换:
    # str ---->list split
    # list---->str join
    #
    # tuple---->list
    '''
    tul=(1,2,3)
    l1=list(tul)
    print(l1)
    tu2=tuple(l1)
    print(tu2)

    #dic ---->list list(dic)(列表中的元素只有key)
    '''
    # dic={'k1':'v1','k2':'v2','k3':'v3',}
    # l1=list(dic)
    # print(l1)
    # print(list(dic.keys()))
    # print(list(dic.values()))
    # print(list(dic.items()))
    # print(list(dic.items()))

    #0,'',[],(),{} --->bool 都是False
    #print(bool([0,0,0]))

    # set1={1,2,3,'abc',(1,2,3),True,}
    # print(set1)
    # set2={11,11,11,22,}
    # print(set2)
    #列表的去重
    # l1=[11,11,22,22,33,33,33,44]
    # l2=list(set(l1))
    # l2.sort()
    # print(l2)
    #
    # set1={'alex','WuSir','RiTiAn','egon','barry'}
    #增
    # set1.add('太白')
    # print(set1)

    # set1.update('abc')
    # set1.update([111,222,333])
    # print(set1)
    #删
    #remove 按元素删除
    # set1.remove('RiTiAn')
    # print(set1)
    #随机删除,有返回值 pop
    # print(set1.pop())
    # print(set1)

    #清空clear
    # set1.clear()
    # print(set1)

    #删除整体 del
    # del set1
    # print(set1)

    #查
    # for i in set1:
    # print(i)
    # set1={1,2,3,4,5}
    # set2={4,5,6,7,8}

    #交集 & intersetion
    # set3=set1 & set2
    # print(set3)
    # print(set1.intersection(set2))
    #并集 | union
    # print(set1 | set2)
    # print(set1.union(set2))
    #差集 - difference
    # print(set1 - set2) #set1独有
    # print(set2.difference(set1))#set2独有

    #反交集 ^ symmetric_difference
    # print(set1 ^ set2)
    # print(set1.symmetric_difference(set2))
    # set1={1,2,3}
    # set2={1,2,3,4,5,6}
    # print(set1<set2)#Ture set1是set2的子集
    # print(set1.issubset(set2))#Ture set1是set2的子集
    #
    # print(set2>set1) #Ture set2是set1的超集
    # print(set2.issuperset(set1))#Ture set2 是set1的超集
    # set1=frozenset({1,2,3,'alex'})
    # print(set1,type(set1))

    #深浅copy
    # l1=[1,2,3,]
    # l2=l1
    # l3=l2
    # l3.append(666)
    # print(l1,l2,l3)
    #对于赋值运算来说,指向的都是同一个内存地址,一变就变
    #浅copy
    # l1=[11,22,33]
    # l2=l1.copy()
    # l1.append(666)
    # print(l1,id(l1))
    # print(l2,id(l2))
    # l1=[11,22,['barry',[55,66]],[11,22]]
    # l2=l1.copy()
    # l1[2].append('alex')
    # print(l1,id(l1))
    # print(l2,id(l2))
    # print(l1,id(l1[-1]))
    # print(l2,id(l2[-1]))
    #对于浅copy来说,对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始指向的都是同一个内存地址,
    # 所以对于第二层以及更深的层数来说,保持一致性.

    #深copy
    # import copy
    # l1=[11,22,33]
    # l2=copy.deepcopy(l1)
    # l1.append(666)
    # print(l1,id(l1))
    # print(l2,id(l2))
    #
    # l1=[11,22,['barry']]
    # l2=copy.deepcopy(l1)
    # l1[2].append('alex')
    # print(l1,id(l1[-1]))
    # print(l2,id(l2[-1]))

    #深copy 完全独立.
    # s1='alex'
    # s2='alex'
    # l1=[1,2,3]
    # l2=[1,2,3]
    # l1.append(666)
    # print(l1,l2)

    #对于切片来说,这是浅copy.
    l1=[1,2,3,4,5,6,[11,22]]
    l2=l1[:]
    l1.append(666)
    print(l1,l2)
    # l1[-1].append(666)
    # print(l1,l2)
  • 相关阅读:
    mysql数据库连接报错ERRoR1130(HY000)
    Ladap相关知识精简资料
    Github访问慢,解决方案
    IIS短文件漏洞成因,及修复方案
    Kali linux简单匿名处理方法
    NHibernate实践总结(二) 在mapping文件中设置抓取策略对HQL与Criteria造成不同影响的测试与验证
    NHibernate 3.x新功能实践(二) QueryOver(下)
    NHibernate实践总结(三)HQL的thetastyle join对无关联实体的连接与应用
    NHibernate实践总结(一)
    Scott Hanselman's 2009 NET与Windows终极开发工具列表
  • 原文地址:https://www.cnblogs.com/weilaixiaochaoren/p/9005438.html
Copyright © 2020-2023  润新知