共计 794 个字符,预计需要花费 2 分钟才能阅读完成。
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
对象的确反对负索引,然而会将其解读为从正索引所确定的序列的开端开始索引。