数据结构与算法

ernestwang 1 0

  • 列表排序
    • 冒泡、选择、插入、希尔、快速等
  • 排列组合
    import itertools
    
    # 排列:从m个元素中提取n个的所有可能称为排列(有顺序的)
    # 当m等于n时称为全排列
    p = itertools.permutations([1, 2, 3, 4], 2)
    
    # for i in p:
        # print(i)
    
    # 组合:简单理解为没有顺序的排序
    c = itertools.combinations([1, 2, 3, 4], 2)
    
    # for i in c:
        # print(i)
    
    # 笛卡尔乘积:多个序列中的元素组合
    # pd = itertools.product([1, 2], [3, 4, 5])
    # 多个相同序列
    # pd = itertools.product([1, 2], [1, 2], [1, 2])
    # 与上面等价
    pd = itertools.product([1, 2], repeat=3)
    for i in pd:
        print(i)
练习:通过排列实现列表中数据组合的最大值的求解
  • 双向队列
    from collections import deque
    
    # 创建双向队列
    d = deque([1, 2, 3])
    
    # 从右侧追加
    d.append(4)
    
    # 从左侧插入
    d.appendleft(5)
    
    # 右侧弹出元素
    print(d.pop())
    
    # 左侧弹出元素
    print(d.popleft())
    
    # 右侧扩充
    d.extend(['a', 'b', 'c'])
    
    # 左侧扩充
    d.extendleft(['aa', 'bb', 'cc'])
    
    # 循环移动:正数表示向右,负数表示向左
    # d.rotate(2)
    d.rotate(-2)
    
    print(list(d))
    
    # for i in d:
    #     print(i)
    自己封装实现一个类似于deque的类
  • 栈结构:就是一种先进后出的数据存储结构
  • 堆数据:C语言中动态分配的存储空间就在堆区,python中的对象就存放在这里,变量在栈区
  • zip
    z = zip([1, 2, 3], [4, 5, 6], [7, 8, 9])
    
    dt = {'name': 'dahua', 'age': 18}
    
    dt2 = {}
    
    # for key in dt:
    #     value = dt[key]
    #     dt2[value] = key
    # print(dt2)
    
    # 一句话交换字典的键值
    dt2 = dict(zip(dt.values(), dt.keys()))
    
    print(dt2)

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~