# pyton notes - 自學python筆記 與 程式紀錄 ###### tags: `Python` ## list ### list operate ```python= myList[start:end:interval] #not included end ``` :::info if interval < 0 the list will be upside down ::: ### get index ```python= idx = myList.index(element) ``` ## string ### special string ```python= #method 1 "%d" % (num) "%02d" % (num) #method 2 {}.format(num) {%02d}.format(num) #method 3 f"{num}" f"{num:02d} ``` ### join ```python= S = [s1,s2,s3] L1 = "_c_".join(S) # L1 -> [s1_c_s2_c_s3] s.join(map(str, [])) #e.g. ss = ".".join(map(str,[1,2,3,4])) #s == "1.2.3.4.5" ``` ### zip ```python= A = [a1,a2,a3] B = [b1,b2,b3,b4] C = [c1,c2,c3,c4] L= [[a1,b1,c1]] ``` ### enumerate ```python= A = [a1,a2,a3] ``` ### splat [*"abc",*"abc"] ### hex oct bin ### muti-line ```python= a\ =\ 3 ``` ### format > '<' - Left aligns the result (within the available space) > '>' - Right aligns the result (within the available space) > '^' - Center aligns the result (within the available space) > '=' - Places the sign to the left most position > '+' - Use a plus sign to indicate if the result is positive or negative > '-' - Use a minus sign for negative values only > ' ' - Use a leading space for positive numbers > ',' - Use a comma as a thousand separator > '_' - Use a underscore as a thousand separator > 'b' - Binary format > 'c' - Converts the value into the corresponding unicode character > 'd' - Decimal format > 'e' - Scientific format, with a lower case e > 'E' - Scientific format, with an upper case E > 'f' - Fix point number format > 'F' - Fix point number format, upper case > 'g' - General format > 'G' - General format (using a upper case E for scientific notations) > 'o' - Octal format > 'x' - Hex format, lower case > 'X' - Hex format, upper case > 'n' - Number format > '%' - Percentage format ### functools.reduce ```python3= reduce(function, iterable [, initial]) -> value ``` e.g. ### functools.partial ```python3= partial(func, *args, **keywords) """ return a new function with partial application of the given arguments and keywords. """ ``` e.g ```python3=00000000000 indpnt=partial(print,'[\t',']') indpnt("Hello world!") ``` ```python >>> [ ] Hello world! ``` ### filter ```python3= """ Return an iterator yielding those items of iterable for which function(item) is true. If function is None, return the items that are true. """ filter(function or None, iterable) --> filter object ``` ### permutaion ```python= from itertools import * permutations(iterable, r=None) # | # | Return successive r-length permutations of elements in the iterable. # | # | permutations(range(3), 2) --> (0,1), (0,2), (1,0), (1,2), (2,0), (2,1) combinationss(iterable, r) ``` ### sys input ```python= import sys for myInput in sys.stdin: print(myInput) ``` ## OpenCV ## numpy ```python= img2 = add(multiply(img,a),b) img2 = img*a + b img3 = (exp(img2.astype(float64)) ) img4 = log(img2) img2 = clip(img2,0,255).astype(uint8) img3 = clip(img3,0,255).astype(uint8) img4 = clip(img4,0,255).astype(uint8) # A = full(img.shape,a) # B = full(img.shape,b) # img22 = (A* img + B) #img22 = clip(img22,0,255).astype(uint8) ``` * array ``` np.arange(n) ``` * operate ``` A.dot(B) # matrix mul A.any() # if 1 in A return 1 A.all() # all 1 return 1 A.sum(axis=0) #axis = 要加總的(0,1,2,3,4) if 0 --> (1,2,3,4) 3--> (0,1,2,4) A > 10 # -->[T,F.....] 看該項>10? ``` ## pandas ### str #### 🔧 基本處理 | 方法 / 屬性 | 說明 | 範例 | |--------------------|--------------------------------|------------------------------| | `str.upper()` | 全部轉大寫 | `'foo' → 'FOO'` | | `str.lower()` | 全部轉小寫 | `'FOO' → 'foo'` | | `str.title()` | 每個單字首字母大寫 | `'foo bar' → 'Foo Bar'` | | `str.capitalize()` | 首字大寫,其餘小寫 | `'foo BAR' → 'Foo bar'` | | `str.strip()` | 移除前後空白 | `' hi ' → 'hi'` | | `str.lstrip()` | 移除左側空白 | `' hi' → 'hi'` | | `str.rstrip()` | 移除右側空白 | `'hi ' → 'hi'` | | `str.zfill(w)` | 用 0 補足寬度 w | `'5'.zfill(3) → '005'` | | `str.pad(w)` | 置左/右/中補齊寬度 | `'a'.pad(3) → ' a'` | | `str.center(w)` | 中間對齊 | `'a'.center(3) → ' a '` | --- #### 🔍 搜尋與比對 | 方法 / 屬性 | 說明 | 範例 | |----------------------|-------------------------------|--------------------------------| | `str.contains(p)` | 是否包含字串 / regex | `'abc'.contains('b') → True` | | `str.startswith(p)` | 是否以某字串開頭 | `'abc'.startswith('a') → True`| | `str.endswith(p)` | 是否以某字串結尾 | `'abc'.endswith('c') → True` | | `str.match(p)` | 是否整體符合 regex | `'123'.match(r'\d+')` | | `str.find(sub)` | 傳回子字串位置,找不到 -1 | `'abc'.find('b') → 1` | | `str.rfind(sub)` | 從右邊找字串位置 | `'abcabc'.rfind('b') → 4` | --- #### ✂️ 分割、取代與擷取 | 方法 / 屬性 | 說明 | 範例 | |------------------------|-------------------------------------|-----------------------------------| | `str.replace(a, b)` | 替換文字(支援 regex) | `'abc'.replace('b','x') → 'axc'` | | `str.split(sep)` | 用分隔符拆成 list | `'a@b'.split('@') → ['a','b']` | | `str.rsplit(sep)` | 從右邊分割 | `'a@b@c'.rsplit('@', 1)` | | `str.extract(r'()')` | 擷取符合 regex 的 group(只抓括號) | `'a@b.com' → 'b.com'` | | `str.extractall(r'()')`| 抓出所有符合的 capture group | 適合多重擷取 | | `str.get(i)` | 從 list/tuple 中取第 i 個元素 | `['a','b'].get(0) → 'a'` | | `str.join('-')` | 把 list 用符號串起來 | `['a','b'] → 'a-b'` | --- #### 🧪 類型判斷(布林) | 方法 / 屬性 | 說明 | 範例 | |---------------------|----------------------------|-------------------------| | `str.isalpha()` | 是否全為英文字母 | `'abc' → True` | | `str.isdigit()` | 是否全為數字 | `'123' → True` | | `str.isalnum()` | 是否為英數混合 | `'a1' → True` | | `str.isspace()` | 是否全部為空白 | `' ' → True` | | `str.isnumeric()` | 是否為數字(含 ½, ⅓ 等) | `'⅓' → True` | | `str.isdecimal()` | 是否為十進制數字 | `'2' → True` | --- #### 🧩 其他實用功能 | 方法 / 屬性 | 說明 | 範例 | |---------------------|-------------------------------|----------------------------| | `str.len()` | 字串長度 | `'abc'.len() → 3` | | `str.slice(1,3)` | 切出子字串 | `'hello' → 'el'` | | `str.cat()` | 合併多個 Series | 可指定分隔符 | | `str.repeat(n)` | 重複 n 次 | `'ab'.repeat(3) → 'ababab'`| | `str.encode()` | 字串轉 bytes | `'hi'.encode('utf-8')` | | `str.normalize()` | unicode 正規化(需額外套件) | `'é'.normalize() == 'é'` | --- > ✅ 註:所有方法皆自動向量化,會作用在整個 Series 上。