数据结构与算法

    Python编程 wuya 110次浏览 已收录 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)
    发表我的评论
    取消评论
    表情 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址