代码改变世界

第七天

2018-03-26 17:18  dalao说得对  阅读(138)  评论(0编辑  收藏  举报

今天学了:

  01、第六天的

  1、  is 与 == 的区别()

    is 比较的是内存地址是否相等,而 == 是比较值是否相等

    查看内存地址用id

  2、小数据池

    int类型是-5~256共用一个数据池,    

    str类型无明确说明,但老师说有特殊字符不存在小数据池。

    单个字符*int(20) 以内 有小数据池。

  3、编码

    英文:

        str:表现形式:‘balabala’

          内部编码形式:unicode

        bytes:表现形式 :b'balabala'

            内部编码形式:非Unicode

    中文:

        str:表现形式:'巴拉巴拉'

          内部编码形式:unicode

        bytes:表现形式:b'\Xf2\X03'这种的

            内部编码形式:非unicode

  02、数据类型的补充:

    (1)isspace      看名字就知道是判定字符串是不是全为空格的

    (2)tuple      对于元组而言,若元组中只有一个元素,则元组类型与此元素相同

              也就是bool((0))返回False的原因

    (3)list        循环列表的时候不要进行删除操作,若必须,则倒着删

    (4)dic        对字典进行循环的时候,不能进行删除操作,故需要删除的时候可以按循环添加需要删除的元素,

              然后再进行一次循环进行删除

     dict.fromkeys的用法:用处是迭代添加元素,前者是键,后者是值

     如dic = dict.fromkeys('abc','alex')

     则运行结果为

  03、集合set

     集合里面的数据是可哈希的(即不可变),但集合是不可哈希的,不能作为字典的Key;

      集合中不存在重复的元素,而且是无序的,故不存在索引。

      增:add  加一个元素   update 迭代增加元素

      删:del  彻底删除  pop随机删   clear清空   remove删除元素

      查:for循环

      frozenset()变为不可变的集合  

      集合的作用基本有两种:1、去重

                 2、数据测试关系:&交集  

                          - 差集

                          | 并集  

                          ^反交集  即为并集减去交集

                   判别数据关系时,用   issubset  (是子集)

                              issuperset   (是超集)

                    # set1 = {1,2,3}
                    # set2 = {1,2,3,4,5,6}
                    # print(set1.issubset(set2))  # 子集
                    # print(set2.issuperset(set1))  # set2 是set1的超集

  04、深浅copy

    不是指向一个,在内存中开辟了一个内存空间,对于浅copy来说,第一层创建的是新的内存地址,
    而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

    deep.copy
    对于深copy来说,两个是完全独立的,
    改变任意一个的任何元素(无论多少层),另一个绝对不改变.

    个人认为浅copy之所以称为浅,就是指的复制的不够彻底,因为它是随动的;而深copy则复制的比较根深蒂固,不会因此改变

    PS:赋值的问题:

    a = ['a','b','c']

    b = a

    a.append('i')

    输出结果应是a = b = ['a','b','c','i']     

另外还有解码decode与编码encode,GBK与Utf-8不能实现直接的互相转化,需要用unicode作为中间桥梁