※ 引述《dixitdeus (dixitdeus)》之銘言:
: 現在流行入門學Python,真的會養成一堆壞習慣耶
: 昨天看學生寫的code,一堆人在那邊:
: for s in list:
: If list.index(s) % 2 == 0
: 看到快吐血
: 直接用for each loop,每次都給我call 函式找index
: 還有人寫:
: b = [1,2,3]
: c = [4,5,6]
: …
: …
: c = b[0]
: 直接把裝list的變數拿來裝int
: 可以理解python用於資料科學、機器學習的優勢
: 但初學者就學Python是不是會養成一堆壞習慣啊?
: 可以從C開始學嗎….
你在講什麼鬼 這個很顯然就是因為先學C導致寫法不pythonic
以你舉的第一個例子來說 應該會是 res = [i % 2 == 0 for i in range(len(list))]
有np的話第一個例子連for in 都省了
import numpy as np
res = np.asarray(range(len(list))) % 2 == 0
b, c....如果是後面會用到的向量建議用np
b = np.asarray([1,2,3])
c = np.asarray([4,5,6])
因為丟進Learning的function有時候會直的接 有時候是橫接 有時候會打開
這時候可以善用concatenate 舉例:
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
np.concatenate((a, b), axis=0) # array([[1, 2], [3, 4], [5, 6]])
np.concatenate((a, b.T), axis=1) # array([[1, 2, 5], [3, 4, 6]])
np.concatenate((a, b), axis=None) # array([1, 2, 3, 4, 5, 6])