Week's note
(1) python 這週五面試了間公司,被詢問了個關於一個 python 不錯的問題,筆記一下。 [Q] a = [[0]*3]*4 a[0][1] = 3 a[1][1] = ? [A] 主要是python對於常數(constant/immutable variable)所指向的記憶體空間皆同. 像是 0, "a", 3.189 等常數有各自的記憶體空間。但是list, dic等型別的宣告則會分配不同的空間。 >>> a=[[1,2],[1,2]] >>> id(a[0]) 4336602216 >>> id(a[1]) 4336652728 >>> a=[[1,2]]*2 >>> id(a[0]) 4336652440 >>> id(a[1]) 4336652440 另外就是 list 的乘法。過去針對數值的運算免不了都用 numpy, scipy 或 conda 內建地資料結構, 像是 array, frame, matrix 等,直接作 list multiplication 我通常只會寫 '='*10 做排版或者採用 list comprehension 的寫法,什麼時候會直些相乘?還沒見過。 不過L大建議可以利用 (1) dis 去 dump python bytecode 了解語法差異。(2) 針對 immutable 的特性,用 ctypes.memmove() 就讓此特性消失了, 很機車的解法 lol (1) SQL 昨天L大問了個關於資料庫的字串搜尋的問題,紀錄一下。假設要找字串 ABC Mysql 語法 SELECT * FROM [table] WHERE [column] LIKE '%ABC%' [Q] 如何讓它更快? [A] a. 若 table 提供 full text indexing, 用關鍵詞 CONTAINS [ stacko...