python速成

calvincalvin發表於2024-09-02

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):返回xy次冪。等價於x ** y,但返回浮點數。
    • math.exp(x):返回ex次冪,即e**x

    2. 對數函式

    • math.log(x, base):返回x在指定base下的對數。如果不指定base,則預設計算自然對數(以e為底)。
      • 例如,math.log(8, 2)返回3.0math.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):返回xy的最大公約數。
    • math.lcm(x, y):返回xy的最小公倍數(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:圓周常數τ,約為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):判斷ab是否接近。
    • 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 reverse
      • defaultdict
      • 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有什麼區別
  • 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)]

相關文章