写点什么

Python 代码阅读(第 12 篇):初始化二维数组

用户头像
Felix
关注
发布于: 3 小时前
Python代码阅读(第12篇):初始化二维数组

本篇阅读的代码实现了二维数组的初始化功能,根据给定的宽高初始化二维数组。


本篇阅读的代码片段来自于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)]
# EXAMPLESinitialize_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对象确实支持负索引,但是会将其解读为从正索引所确定的序列的末尾开始索引。

发布于: 3 小时前阅读数: 2
用户头像

Felix

关注

还未添加个人签名 2018.05.04 加入

欢迎关注个人公众号:没看点 个人主页:www.zhangfelix.com

评论

发布
暂无评论
Python代码阅读(第12篇):初始化二维数组