python数据结构与算法分析 第一章 导论

第一章 导论

运算符 说明
**
// 取整
% 取余
^ 异或
  • 两个整数相除时,其结果是个浮点数

  • 标识符在编程语言中被用作名字。

    • 以字母或者下划线(_)开头
    • 区分大小写
    • 可以是任意长度
    • 尽可能采用表达含义的名字
  • 变量存的是指向数据的引用,而不是数据本身

  • 有序集合:列表(list)、字符串(str)、元组(tuple)

  • 无序集合:集合(set)和字典(dict)

列表

  • 另个或者多个指向Python数据对象的引用的有序集合

  • 异构:列表内可以是不同的类,例如[1, 'a', {1:'a'}, True]

  • 运算

    运算名 运算符 实例
    索引 [] a = ['i', 'am', 'cool']
    a[1] # 'am'
    连接 + [1,2,3] + [4,5,6]
    #[1,2,3,4,5,6]
    重复
    (注意浅拷贝问题)
    * [0] * 5
    [0,0,0,0,0]
    长度 len
    切片 [:]
    倒序 [::-1]

    ⚠️重复运算返回的结果是对序列中指向数据对象的引用的重复

    a = [1,2,3]
    b = [a]*3
    a[1] = 666
    print(b)
    # [[1, 666, 3], [1, 666, 3], [1, 666, 3]]
    
  • 列表提供方法

    方法名 用法 解释
    append alist.append(item)
    insert alist.insert(index,item)
    pop alist.pop()
    pop alist.pop(index)
    sort alist.sort()
    reverse alist.reverse()
    del del a[index]
    index alist.index(item)
    count alist.count(item)
    remove alist.remove(item)

    💁‍♂️reverse和[::-1]的区别

    • reverse为alist.reverse(),无返回值,直接改变alist本身
    • alist[::-1]是将alist的翻转格式复制给另一个变量,alist本身并未改变

字符串

  • 零个或者多个字幕、数字和其他符号的有序集合

  • 常用方法

    方法名 用法 解释
    center astr.center(w, item)
    count astr.count()
    ljust astr.ljust(w, item)
    rjust astr.rjust(w, item)
    lower astr.lower()
    upper astr.upper()
    capitalize astr.capitalize()
    find astr.find(item)
    split astr.split(schar)
  • 字符串不可被修改

元组(tuple)

  • 异构数据序列(与列表类似)
  • 不可修改(与字符串类似)

集合(set)

  • 零个或多个不可修改的Python数据对象组成的无序集合

  • 不允许重复元素

  • 异构

  • 支持的运算

    运算名 运算符 解释
    成员 in
    长度 len
    | aset | bset
    & aset & bset
    - aset - bset
    <= aset <= bset
  • 常用方法

    方法名 用法 解释
    union aset.union(bset) 并集 |
    intersection aset.intersection(bset) 交集 &
    difference aset.difference(bset) 差集 -
    issubset aset.issubset(bset) 子集 <=
    add aset.add(bset) 添加元素
    remove aset.remove(item) 移除元素
    pop aset.pop() 随机移除
    clear aset.clear() 清除所有

字典(dict)

  • 无序结构

  • 运算

    运算名 运算符 解释
    []
    in
    del
  • 方法

    方法名 用法 解释
    keys
    values
    items
    get adict.get(k)
    get adict.get(k, alt)

输入与输出

控制结构

  • 迭代
    • while
    • for
  • 分支
    • if esle

异常处理

  • try except
  • raise

  • __init__

    构造方法:定义了数据对象的创建方式

  • self

    一个总是指向对象本身的特殊参数

    必须为第一个形参

    在调用使u,不需要提供相应的实参

  • 打印类

    class Fraction:
    
        def __init__(self, top, bottom):
            self.num = top
            self.den = bottom
    
    
    test = Fraction(3, 5)
    print(test)
    # <__main__.Fraction object at 0x000001C126ACB4C0>
    

    之前(多久之前就不考究了)版本是instance(实例),现在是object(对象)

  • __str__

    将对象转化成字符串的方法

    例如:当打印(print)或者使用str方法 类的实例化对象时,会调用该方法的结果

  • __add__

    重写,两个实例对象相加的方法(+)

  • __eq__

    重写判断两个类是否相等的方法

继承

子类可以从父类继承特征数据和行为,父类也叫超类

  • super().__init__() 继承父类的init方法

  • 类的构造方法__init__总是先调用其父类的构造方法,然后才处理自己的数据和行为

posted @ 2021-10-12 09:40  zlbingo  阅读(90)  评论(0)    收藏  举报