python速成
python标准库
https://docs.python.org/3/library/
必学模块
https://www.pythoncheatsheet.org/modules/itertools-module
https://www.pythoncheatsheet.org/modules/copy-module
数据类型
NoneType int float complex bool str list tuple range set frozenset dict bytes bytearray memoryview type object ellipsis callable
数据结构
`list` `tuple` `str` `range` `set` `frozenset` `dict` `deque` `defaultdict` `heapq``Counter`
`bytes` `bytearray` `memoryview` `OrderedDict` `ChainMap` `namedtuple` `array`
-
math
math库是Python标准库的一部分,提供了许多用于数学运算的函数。以下是math库中一些常用函数的分类和介绍:1. 基本数学运算
math.sqrt(x):返回x的平方根。例如,math.sqrt(9)返回3.0。math.pow(x, y):返回x的y次幂。等价于x ** y,但返回浮点数。math.exp(x):返回e的x次幂,即e**x。
2. 对数函数
math.log(x, base):返回x在指定base下的对数。如果不指定base,则默认计算自然对数(以e为底)。- 例如,
math.log(8, 2)返回3.0,math.log(math.e)返回1.0。
- 例如,
math.log10(x):返回以10为底的x的对数。math.log2(x):返回以2为底的x的对数。
3. 三角函数
math.sin(x):返回x的正弦值,x以弧度表示。math.cos(x):返回x的余弦值,x以弧度表示。math.tan(x):返回x的正切值,x以弧度表示。math.asin(x):返回x的反正弦值,以弧度表示。math.acos(x):返回x的反余弦值,以弧度表示。math.atan(x):返回x的反正切值,以弧度表示。math.atan2(y, x):返回y/x的反正切值,以弧度表示。考虑到象限问题。
4. 双曲函数
math.sinh(x):返回x的双曲正弦值。math.cosh(x):返回x的双曲余弦值。math.tanh(x):返回x的双曲正切值。math.asinh(x):返回x的反双曲正弦值。math.acosh(x):返回x的反双曲余弦值。math.atanh(x):返回x的反双曲正切值。
5. 特殊函数
math.factorial(x):返回x的阶乘。x必须为非负整数。math.gcd(x, y):返回x和y的最大公约数。math.lcm(x, y):返回x和y的最小公倍数(Python 3.9及以上版本)。math.comb(n, k):返回从n个元素中选取k个元素的组合数(Python 3.8及以上版本)。math.perm(n, k):返回从n个元素中选取k个元素的排列数(Python 3.8及以上版本)。
6. 舍入相关函数
math.ceil(x):返回不小于x的最小整数值。math.floor(x):返回不大于x的最大整数值。math.trunc(x):返回x的整数部分,截断小数部分。
7. 常数
math.pi:圆周率π,约为3.14159。math.e:自然常数e,约为2.71828。math.tau:圆周常数τ,2π,约为6.28318。math.inf:表示正无穷大。math.nan:表示“不是数字”(Not a Number)。
8. 其他
math.degrees(x):将弧度转换为角度。math.radians(x):将角度转换为弧度。math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0):判断a和b是否接近。math.isfinite(x):判断x是否为有限数。math.isinf(x):判断x是否为无穷大。math.isnan(x):判断x是否为NaN。
这些函数涵盖了数学计算中的常见需求,熟练使用
math库能够极大地提高数值计算的效率和准确性。 -
Builtin-function
在Python的内置函数中,有许多函数在日常编程中非常常用。以下是一些常用的内置函数,并根据它们的用途进行分类:
1. 数学运算和数值处理相关
abs():返回数的绝对值。round():对浮点数进行四舍五入。pow():计算幂值。sum():计算可迭代对象中所有元素的和。min():返回可迭代对象中的最小值。max():返回可迭代对象中的最大值。divmod():同时返回商和余数。complex():创建复数。float():将对象转换为浮点数。int():将对象转换为整数。bin():将整数转换为二进制字符串。hex():将整数转换为十六进制字符串。oct():将整数转换为八进制字符串。
2. 类型转换和类型检查
type():返回对象的类型。isinstance():判断对象是否为指定类型。issubclass():判断一个类是否是另一个类的子类。bool():将对象转换为布尔值。str():将对象转换为字符串。list():将对象转换为列表。tuple():将对象转换为元组。set():将对象转换为集合。dict():将对象转换为字典。bytes():将对象转换为字节对象。bytearray():创建一个字节数组。frozenset():创建一个不可变的集合。chr():将整数转换为对应的Unicode字符。ord():返回字符的Unicode码点。
3. 序列操作
len():返回对象的长度(元素个数)。sorted():返回排序后的列表。reversed():返回反转后的迭代器。enumerate():返回可枚举对象,常用于for循环中获取索引和值。zip():将多个可迭代对象打包成元组迭代器。
4. 输入输出
print():输出信息到控制台。input():从控制台获取用户输入。open():打开文件。
5. 反射和动态代码执行
dir():列出对象的所有属性和方法。getattr():获取对象的属性值。setattr():设置对象的属性值。hasattr():判断对象是否有某个属性。delattr():删除对象的属性。globals():返回当前模块的全局变量字典。locals():返回当前局部变量字典。eval():执行字符串形式的表达式,并返回结果。exec():执行字符串形式的Python代码。
6. 函数与类相关
callable():判断对象是否可调用。staticmethod():将方法转换为静态方法。classmethod():将方法转换为类方法。super():用于调用父类的一个方法。property():用于创建属性。
7. 其他
help():调用内置帮助系统。id():返回对象的内存地址。hash():返回对象的哈希值。filter():根据函数过滤可迭代对象。map():将函数应用于可迭代对象的每个元素。
这些函数是日常编程中使用频率较高的,它们涵盖了从基本数据操作到动态执行代码的广泛功能。掌握这些函数将大大提高编写Python代码的效率。
-
immutable/mutable
int float complex bool str tuple frozenset bytes
list bytearray array.arry
-
Counter有哪些方法
elements()most_common([n])subtract([iterable-or-mapping])update([iterable-or-mapping])clear()copy()
-
collections / itertools / functools / operator /
collectionsdeque
append/pop appendleft/popleft extend extendleft remove clear rotate reversedefaultdictnamedtupleOrderedDictCounter
itertoolscount,cycle,repeataccumulatechaincombinations,permutationsproduct
functoolsreducelru_cachepartialcmp_to_key
-
sequence, collection, iterable分别定义了哪些接口?
-
collections
- deque
- defaultdic defaultdict(type)/defaultdict(val)
数据结构如何定义
-
dict/defaultdict
merge dict_c = {**dict_a, **dict_b}- delete
wife.clear() - clear
-
List
- append extend insert remove pop clear index count sort reverse copy
注意下pop的含义 - 双遍历
n = [(a, b) for a in range(1, 3) for b in range(1, 3)] - https://www.pythoncheatsheet.org/cheatsheet/lists-and-tuples
- del/REMOVE有什么区别
- append extend insert remove pop clear index count sort reverse copy
-
heapq
heapq 最小堆
heapq.heappush(heap, item): 将 item 推入 heap 堆中,保持堆的性质。
heapq.heappop(heap): 弹出并返回 heap 堆中最小的元素,保持堆的性质。
heapq.heapify(x): 将列表 x 转化为堆,原地操作。heapq.heapreplace(heap, item): 弹出并返回 heap 堆中最小的元素,然后将 item 推入堆中,保持堆的性质。
heapq.nlargest(n, iterable, key=None): 返回 iterable 中 n 个最大的元素。
heapq.nsmallest(n, iterable, key=None): 返回 iterable 中 n 个最小的元素。 -
链表
-
heapq
-
sorted
基础类型
int
if math.isinf(x):
forloop
* enumerate `for i, el in enumerate(<coll>, start=0):`
* for list如何只保留奇数
* forloop如何写
zip, pairwise, enumerate
if/else
* new_list = [num*2 if num % 2 == 0 else num for num in nums]
排序,二分
* 排序如何写
* Python Lambda
try-catch-finally
- def divide(dividend , divisor):
- try:
- print(dividend / divisor)
- except ZeroDivisionError:
- print('You can not divide by 0')
- finally:
- print('Execution finished')
- Try and Except Statement
- 如何捕获具体的except
print()有哪些参数
- print('09', '12', '2016', sep='-')
- Python sep parameter in print()
string
- String
- endswith
- count
- sort(key=xxx,)
- string.find(value, start, end)
- method归纳一下
- Template Strings
oop
-
oop private/protected ABC
-
datacalss
-
必须在 dataclass 中定义数据类型。但是,如果您不想指定数据类型,请使用 .typing.Any
-
from dataclasses import dataclass
-
from typing import Any
-
@dataclass
-
class WithoutExplicitTypes:
-
name: Any
-
value: Any = 42
bisect.bisect_left
functool
cache/lru_cache
sorted/
- key, lambda
lambda 怎么写?
type/isinstance
interator看起来不常用
todo
稍微背诵下就可以写题了,复习下函数还有八股
chaining comparison operators
https://www.pythoncheatsheet.org/cheatsheet/debugging
https://www.pythoncheatsheet.org/cheatsheet/args-and-kwargs
https://www.pythoncheatsheet.org/cheatsheet/decorators
https://www.pythoncheatsheet.org/cheatsheet/oop-basics
https://www.pythoncheatsheet.org/cheatsheet/built-in-functions
注意list的insert是向前插入?
前缀和 dfs bfs怎么写?
排序如何写?
以下是 Python 中常见的不可变(immutable)对象的类型列表:
sys
builtins — Built-in objects
dataclasses — Data Classes
sum
sort
sorted_intervals = sorted(intervals, key=lambda x: (-x[1], x[0]))
typing
引用/浅拷贝/深拷贝
graph = [[] * numCourses]
graph = [[] for _ in range(numCourses)]
给题目归类下 相似的题目做一个就行

浙公网安备 33010602011771号