我是Python的新手。如果您能解释这条线是如何工作的,将非常感激。在for-loop之前有一个数字是什么意思?
adjacency_matrix = [[0 for i in range(max_index + 1)] for j in range(max_index + 1)]
我知道
max_index = 4
adjacency_matrix = [[0 for i in range(max_index + 1)] for j in range(max_index + 1)]
>>>[[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
但我不明白它是如何运作的。
由于
答案 0 :(得分:3)
这是list comprehension。您可以按如下方式重写:
>>> adjacency_matrix = []
>>> for j in range(max_index + 1):
... inner_list = []
... for i in range(max_index + 1):
... inner_list.append(0)
... adjacency_matrix.append(inner_list)
答案 1 :(得分:1)
如果我们在列表推导中使用变量来填充列表,则只要满足条件,结果列表就会获取变量的值。因为我们正在使用' 0'意味着列表由值' 0'填充。只要满足条件。
答案 2 :(得分:0)
0
是列表推导添加到数组(列表)的值 - 每个零列表都嵌套在父列表中的方式相同。尝试将其更改为不同的整数,浮点数,字符串,布尔值等...
>>> max_index = 4
>>> adjacency_matrix = adjacency_matrix = [[True for i in range(max_index + 1)] for j in range(max_index + 1)]
>>> adjacency_matrix
[[True, True, True, True, True],
[True, True, True, True, True],
[True, True, True, True, True],
[True, True, True, True, True],
[True, True, True, True, True]]
否则,请参阅@ozgur的答案,将列表解析转换为明确的for循环,并链接到PyDoc for list comps。
基本上,你所援引的是:
[ ADD_THE_FOLLOWING_LISTS:
[ADD_THIS_VALUE_TO_EACH_INNER_LIST = 0, True, etc...
`for` each_integer
`in` the `range`_of
(zero through four - not including five)] = [value, value, value, value, value]
...............................`for` each_number
`in` the `range`_of
(zero through four - not including five)]
] = a (4 + 1) x (4 + 1), or 5x5 grid of values
[ [value, value, value, value, value],
[value, value, value, value, value],
[value, value, value, value, value],
[value, value, value, value, value],
[value, value, value, value, value] ]