警告
本文最后更新于 2022-04-08,文中内容可能已过时。
基本
输入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def cin1():
return [int(i) for i in input().split()]
def cin2():
return map(int, input().split())
def cin3():
return list(map(int, input().split()))
# 输入一个常数
n, = cin() # 注意','
m, n = cin()
# 输入一个数组
arr = cin() # 注意cin2会返回map对象
|
输入输出重定向
使用操作系统的重定向
1
|
python script.py < input > output
|
Python 与 STL
Python 标准库 — Python 3.8.12 文档
本人出身于C/C++
,这里用类STL
表示Python
中可利用的built in lib
priority queue (heap)
优先队列往往用堆来实现。优先队列 - 维基百科
vector
1
2
3
|
arr = list()
arr = [0]*n
arr = [[0]*n for _ in range(m)]
|
set
1
2
|
set_ = set()
set_ = {1, 2, 3}
|
map
1
2
3
4
5
6
7
8
9
10
11
|
from collections import Counter, defaultdict
arr = [1, 1, 2, 2]
counter = Counter(arr) # 计数
defaultdict_ = defaultdict(lambda: -1) # 默认字典
dict_ = dict()
dict_ = {
1: 2,
2: 4
}
dict_ = {i: i for i in range(5)}
|
stack
5. 数据结构 — Python 3.8.12 文档
列表方法使得列表作为堆栈非常容易,最后一个插入,最先取出(“后进先出”)。要添加一个元素到堆栈的顶端,使用 append()
。要从堆栈顶部取出一个元素,使用 pop()
,不用指定索引。
queue
5. 数据结构 — Python 3.8.12 文档
列表也可以用作队列,其中先添加的元素被最先取出 (“先进先出”);然而列表用作这个目的相当低效。因为在列表的末尾添加和弹出元素非常快,但是在列表的开头插入或弹出元素却很慢 (因为所有的其他元素都必须移动一位)。
若要实现一个队列,可使用 collections.deque
,它被设计成可以快速地从两端添加或弹出元素
1
|
from collections import deque
|
不需要指针的链表
1
2
3
4
|
class LinkedListNode:
def __init__(self, val, nxt) -> None:
self.val = val
self.nxt = nxt
|
还可以是双指针链表
1
|
vals, pre, nxt = [], [], []
|