列表(mis?)在Python2.7中对行和列的理解

时间:2016-06-05 06:14:04

标签: python-2.7 for-loop list-comprehension

我已查看过该文档: https://docs.python.org/2/howto/functional.html?highlight=list%20comprehension

但我在理解列表理解逻辑方面遇到了麻烦。句法。为了构建相对于高度和宽度输入的网格值列表(逐行)(例如,4 x 6网格的零: [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]

这个嵌套的for循环完成了这项工作:

h = 4
w = 6
grid_list = []
for row in xrange(h):
    grid_list.append(list())
    for col in xrange(w):
        grid_list[row].append(0)

...我理解列表理解能够用两个listcomp语句做同样的事情:

h = 4
w = 6
grid = [[] for row in xrange(h)]
grid = [[0 for col in xrange(w)] for nested_row_list in grid]

但是,是否有单一的列表理解陈述可以完成整个构造?或者是grid_list.append(list())扩展了for循环的范围,而不是列表理解可以做什么?

1 个答案:

答案 0 :(得分:1)

好吧,你可以简单地做

grid = [[0 for col in xrange(w)] for row in xrange(h)]