算法笔试必备:Python 高频函数 + 万能技巧
·
文章目录
前言,本博主在写算法题的时候用cpp总是会遇到各种奇奇怪怪的问题,而且很难排查,此外cpp代码太长,要注意的点太多,因此准备从今天开始用python写算法。相对于cpp,python简单轻便,各种函数和库完备,很适合算法尤其机器学习,故用此文先总结一下常用的方法和技巧。
笔试算法必备:Python 高频函数 + 万能技巧(直接背)
下面这些全是笔试最常用、最能救命的,不用多,掌握这些足够应付 90% 笔试题。
一、最常用内置函数(必背)
1. 输入输出(笔试必考)
快速读入(比 input 快,防超时)
import sys
input = sys.stdin.read().split()
一行读多个数
a, b, c = map(int, input().split())
多行输入
for _ in range(int(input())):
x, y = map(int, input().split())
2. 排序 sort / sorted
# 列表升序
a.sort()
# 降序
a.sort(reverse=True)
# 自定义排序(你这题刚用到!)
lst.sort(key=lambda x: x[2]) # 按第3个元素
lst.sort(key=lambda x: -x[1]) # 按第2个元素倒序
3. 最值、求和、长度
min(arr)
max(arr)
sum(arr)
len(arr)
4. 枚举下标 + 值
for i, val in enumerate(arr):
print(i, val)
5. 拉链(同时遍历多个列表)
for x, y in zip(list1, list2):
6. 数学相关
abs(x) # 绝对值
pow(x, 2) # 平方
math.sqrt(x) # 平方根
math.hypot(x,y) # √(x²+y²)
math.inf # 无穷大
二、容器神器(笔试高频)
1. 列表 list
arr.append(x) # 加末尾
arr.pop() # 删末尾
arr.insert(i, x)
arr.clear()
2. 字典 dict(统计频率神器)
d = {}
d[key] = value
d.get(key, 0) # 不存在返回0,不报错
3. 集合 set(去重、判重)
s = set()
s.add(x)
x in s # O(1) 判断存在
4. 队列(BFS 必用)
from collections import deque
q = deque()
q.append(x)
q.popleft() # O(1),比 list pop(0) 快一万倍
三、字符串常用(高频)
s.strip() # 去空格换行
s.split() # 切分
s.lower()
s.upper()
s.isdigit() # 是否数字
s.find(t) # 找子串
','.join(list) # 列表转字符串
四、笔试万能技巧(非常重要)
1. 无穷大初始化
min_val = float('inf')
max_val = -float('inf')
2. 二维数组创建(别用 [[]]*n)
n, m = 5, 3
a = [[0]*m for _ in range(n)]
3. 前缀和
pre = [0]
for num in arr:
pre.append(pre[-1] + num)
4. 二分查找(内置)
import bisect
bisect.bisect_left(arr, x)
5. 计数器(频率统计)
from collections import Counter
cnt = Counter(arr)
print(cnt[x])
6. 深度拷贝(避免改原数组)
import copy
b = copy.deepcopy(a)
五、写算法最舒服的 Python 特性
1. 不用声明类型
a = []
a.append(1)
a.append("abc") # 随便加
2. 交换不用临时变量
a, b = b, a
3. 负数下标
last = arr[-1] # 最后一个
second_last = arr[-2]
4. 切片太好用
arr[1:] # 从第2个开始
arr[:-1] # 去掉最后一个
5. 函数可以返回多个值
def f():
return a, b, c
x, y, z = f()
总结
笔试算法题:
Python 比 C++ 好写 3 倍,错率低 10 倍,速度快 2 倍。
只要掌握上面这些,笔试几乎无敌。
更多推荐



所有评论(0)