• 第六周 python组合数据类型


    集合类型及操作

      集合元素之间无序,集合元素不可更改。

      创建

        set("pypy123")

        {'1', '3', 'p', 'y', '2'}       空集合不能用{}生成,留个字典了,  用set()

      关系操作

        交 & 并 |  差 -   补^  支持(&=, |=,  -=, ^=)

        关系操作符 <,<=,>,>=  判断子集关系或包含关系

    >>> A = {'p','y',123}
    >>> B = set("pypy123")
    >>> A-B
    {123}
    >>> B-A
    {'1', '3', '2'}
    >>> A&B
    {'y', 'p'}
    >>> A|B
    {'1', '3', 'p', 'y', '2', 123}
    >>> A^B
    {'1', '3', '2', 123}
    >>>  

      方法:

        S.add(x)

        S.discard(x)        #不报错

        S.remove(x)        #没有会报错

        S.clear()

        S.pop()          #随机 pop一个,没有产生异常

        S.copy()

        Len(S)

        x in S / x not in S

      集合应用场景:

        关系判断  

        数据去重:集合类型所有数据无重复

    >>> listA = [1,3,2,4,2,1,1,2]
    >>> setTemp = set(listA)
    >>> listA = list(setTemp)
    >>> listA
    [1, 2, 3, 4]



    序列类型及操作

      序列是一维元素的向量。

      序列类型是基类类型 (元组,列表,字符串)由序列类型衍生

      处理函数:

        x in S / x not in S

        S + t 

        S *n或n*S

        S[i]

        s[i:j]或s[i:j:k]    #切片

      通用函数:

        len(s)

        min(s)       #需要可比

        max(s)      #需要可比

      方法:

        s.index(x)或 s.index(x,i,j)       #从i到j第一次出现的位置

        s.count(x)          #x出现总次数


    元组类型

      元组是序列类型的一种扩展。

      不可变类型

      定义

        ()或 tuple()

         单个元组 (1,)  要加逗号,区分与基本类型

         可以使用小括号或者不适用小括号

         example:

            def  func():

              return 1,2

         1,2就是一个元组

      操作:

        继承序列的操作

        无特殊操作


    列表类型

      可变类型

      定义

        []或list()

        列表中各元素类型可以不同,无长度限制

        ex:

    >>> ls = ['pig','fish',999]
    >>> ls
    ['pig', 'fish', 999]
    >>> lt = ls
    >>> lt
    ['pig', 'fish', 999]

        方括号[]和list真正创建一个列表,赋值操作仅传递引用()浅拷贝

      操作:

        ls[i] = x

        ls[i:j:k] = lt    #用lt替换ls切片后所对应元素子列表

        del ls[i]

        del ls[i:j:k]

        ls += lt

        ls *= n      #使元素重复n遍

      方法:

        ls.append(x)    #后面增加一个元素

        ls.clear()

        ls.copy()      #创建一个新的,深拷贝

        ls.insert(i, x)     #在ls第i个元素前增加元素x

        ls.pop(i)      #取出并删除第i位置元素

        ls.remove(x)     #将ls中出现的第一个元素x删除

        ls.reverse()      #反转

      extend()和append()的区别:

        append(x)只向列表增加一个元素,如果x为列表,则列表x作为一个元素,不会拆分

        extend(seq)参数seq 是元素序列,会将元素拆分依次加到后面

      

    >>> ls = list(range(1,5))
    >>> ls
    [1, 2, 3, 4]
    >>> ls.append(1)
    >>> ls
    [1, 2, 3, 4, 1]
    >>> ls.append(1,2,3)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: append() takes exactly one argument (3 given)
    >>> ls.append([1,2,3])
    >>> ls
    [1, 2, 3, 4, 1, [1, 2, 3]]
    >>> ls.append((1,2,3))
    >>> ls
    [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3)]
    >>> ls.append({a:1,b:2})
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'a' is not defined
    >>> ls.append({'a':1,'b':2})
    >>> ls
    [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}]
    >>> ls.extend(range(5,8))
    >>> ls
    [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}, 5, 6, 7]
    >>> ls.extend((1,2,3))
    >>> ls
    [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}, 5, 6, 7, 1, 2, 3]
    >>> ls.extend({'c':3,'d':4})
    >>> ls
    [1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}, 5, 6, 7, 1, 2, 3, 'c', 'd']     

    序列应用场景

        数据表示

        元组用于元素不改变的场景,多用于固定搭配,数据保护 (const)




    字典类型

      键值对 索引->数据

      字典是键值对的集合,键值对之间无序

      定义

        {}或dict() 键值间用:分割

      操作和方法:

        del d[k]

        k in d

        d.keys()         #返回所有键    返回类型可以便利,但不能当列表操作

        d.values()        #返回所有值 

        d.items()        #返回所有键值对信息

        d.get(k,<default>)    #键k存在,返回对应值,不存在返回<default>值

        d.pop(k,<default>)    #键k存在,取出对应值,不存在返回<default>值

        d.popitem()       #随机取出一个键值对,以元组的形式反回

        d.clear()   

        len(d)

    应用场景

      表达键值对数据,进而操作

      元素遍历

        for k in d:

  • 相关阅读:
    SqlServer事务语法及使用方法
    mysql解决自动断开8小时未曾用过的链接
    JIRA license申请和语言包下载
    String literal is not properly closed by
    android开发 NDK 动态链接多个第三方库(so)
    vim字符串替换
    VMware tools的用途及安装[跨系统文件拖拽]
    十大高明的Google搜索技巧
    安装ADT-20.0.3的时候产生org.eclipse.cdt.feature.group 0.0.0' but it could not be ..
    [Android NDK]修复/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 问题
  • 原文地址:https://www.cnblogs.com/hao11/p/12577859.html
Copyright © 2020-2023  润新知