无法理解 python 代码

Cannot understand a python code

Q.Write 一个以 2 位数字 X,Y 作为输入并生成 2- 维数组。第i行第j列的元素值 数组应该是 i*j.

一个。

input_str = raw_input()
dimensions=[int(x) for x in input_str.split(',')]

rowNum=dimensions[0]
colNum=dimensions[1]
multilist = [[0 for col in range(colNum)] for row in range(rowNum)]
for row in range(rowNum):
  for col in range(colNum):
    multilist[row][col]= row*col
print multilist

我想知道multilist = [[0 for col in range(colNum)] for row in range(rowNum)]

中的0是什么意思

在列表理解中,首先调用它,参数是将在当前迭代位置插入的值。 它可以是任何东西,所以这里是零。

这从字面上翻译成标准:

multilist = []
for i in range(rowNum):
    row = []
    for j in range(colNum):
        row.append(0)
    multilist.append(row)

当您从下到上阅读此代码时,您对列表的理解也是如此。

外部列表的第一个 "argument" 是:

[0 for j in range(colNum)]

而第一个"argument",因此内部列表的一个项目是0。

因此,这个内部列表在外部列表中重复了 rowNum 次:

[ [inner_list] for i in range(colNum)]

有一个稍微好一点的方法:

multilist = [colNum*[0] for x in xrange(rowNum)]