Python代碼閱讀(第12篇):初始化二維數組


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對象確實支持負索引,但是會將其解讀為從正索引所確定的序列的末尾開始索引。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM