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 /
collections
deque
append/pop appendleft/popleft extend extendleft remove clear rotate reversedefaultdict
namedtuple
OrderedDict
Counter
itertools
count
,cycle
,repeat
accumulate
chain
combinations
,permutations
product
functools
reduce
lru_cache
partial
cmp_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)]