在for循环之前,数字的含义是什么

时间:2016-09-30 04:52:45

标签: python list-comprehension

我是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]] 

但我不明白它是如何运作的。

由于

3 个答案:

答案 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] ]