Python刷题总结

以下是我用python刷算法的记录,记下来以便复习

1. 线性表

  • 顺序表
# 创建顺序表
a = []
a = list()
# 在尾部插入元素x
a.append(x)
# 删除索引i的元素
a.pop(i)
  • 链表
class linkNode():
  def __init__(x, y)
    self.val = x
    self.next = y
  • 堆栈
# 创建堆栈
s = []
# 压入元素
s.append(x)
# 弹出元素
s.pop()
# 判断是否为空
s
# 判断是否已满
len(s) < maxsize
  • 先进先出队列
from queue import Queue

# 创建队列
q = Queue(100)
# 元素x入队
q.put(x)
# 队首元素出队
q.get()
# 判断队空,队空返回True
q.empty()
# 判断队满,队满返回True
q.full()
# 返回队列大小
q.qsize()
  • 优先级队列
from queue import PriorityQueue
""" PriorityQueue继承了Queue,改写了_put和_get方法,底层调用了heappush和heappop实现了优先级的管理 """

# 创建队列
q = PriorityQueue(100)
# 元素x入队
q.put(x)
# 队首元素出队
q.get()
# 判断队空,队空返回True
q.empty()
# 判断队满,队满返回True
q.full()
# 返回队列大小
q.qsize()
  • 元组(不可变列表)
a = ()
a = tuple()

2. 字典(哈希表)

# 创建字典
a = dict()
a = {}
# 插入元素,k表示键,v表示值
a[k] = v
# 取出元素
a[k]
a.get(k, default)
# 查看所有键
a.keys()
# 查看所有值
a.values()
# 查看所有键值对
a.items()

3. 集合

# 创建集合
a = set()
# 添加元素x
a.add(x)
# 删除元素x
a.remove(x)
# 集合a,b的交集
a & b
# 集合a,b的并集
a | b

4. 堆

import heapq
""" heapq实现的是最小堆,将数组调整成堆的结构 """

s = [3,1,4,2,6]
# 小根堆
# 将数组调整为小根堆
heapq.heapify(s)   #=> s = [1, 2, 4, 3, 6]
# 弹出最小元素
heapq.heappop(s)   #=> 1
# 插入元素0
heapq.heappush(s, 0)  #=> s = [0, 2, 4, 6, 3]
# 弹出最小元素并插入1
heapq.heapreplace(s, 1) #=> s = [1, 2, 4, 6, 3]

# 大根堆
ns = [(-i, i) for i in s]
heapq.heapify(ns)
heapq.heappop(ns)[1]      #=> 6

5. 排序

""" sort是可变对象(字典、列表)的方法,在原地对序列进行排序,无返回值; sorted是python的内置函数,需要传递排序对象作为参数,返回一个排序后的迭代器(不改变原数组); """

# sorted方法
# 对字典进行排序
dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
# 对字典按照值降序排列
sorted(dic.items(), key=lambda x: x[-1], reverse=True)
# [('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)]
# 对字典按照键升序排列
sorted(dic.items(), key=lambda x: x[0], reverse=False)
[('a', 31), ('aa', 74), ('asd', 4), ('bc', 5), ('c', 3), ('d', 0)]

# sort
a = [3,4,2,1]
a.sort()

你可能感兴趣的:(Data,Structure)