Python 代碼閱讀合集介紹:為什么不推薦Python初學者直接看項目源碼
本篇閱讀的代碼實現了二維數組的初始化功能,根據給定的寬高初始化二維數組。
本篇閱讀的代碼片段來自於30-seconds-of-python。
initialize_2d_list
def initialize_2d_list(w,h, val = None):
return [[val for x in range(w)] for y in range(h)]
# EXAMPLES
initialize_2d_list(2, 2, 0) # [[0,0], [0,0]]
initialize_2d_list接收二維數組的寬、高和初始值,返回一個二維數組。
函數通過列表推導式和range()函數生成h行長度為w的列表。列表中的元素的初始值由參數val指定。
[[val for x in range(w)] for y in range(h)]該列表推導式的第一個部分是生成一個列表,該列表長度為w,所有的值為val。第二部分是將第一部分生成的列表作為元素生成一個長度為h的列表。
range
range類型表示不可變的數字序列,通常用於在for循環中循環指定的次數。它有兩種形式:class range(stop)和class range(start, stop[, step])。如果省略 step 參數,其默認值為1。如果省略start參數,其默認值為0,如果step為零則會引發ValueError。
如果step為正值,確定range r內容的公式為r[i] = start + step*i 其中 i >= 0 且 r[i] < stop。
如果step為負值,確定range內容的公式仍然為r[i] = start + step*i,但限制條件改為 i >= 0 且 r[i] > stop。
如果r[0]不符合值的限制條件,則該range對象為空。range對象確實支持負索引,但是會將其解讀為從正索引所確定的序列的末尾開始索引。
