前言,本博主在写算法题的时候用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 倍。

只要掌握上面这些,笔试几乎无敌

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐