这个理解列表怎么解释
how is die Interpretation of this comprehension list
如何理解这一行?
O = [[[-1 for i in range(int(o[0][1]))] for k in range(int(i[0]))] for i in o]
最简单的方法是从外到内:
- 设置
O
等于...
- 一个数组,对于可迭代对象
o
中的每个元素 i
,...
- 一个数组,对于
range(0,int(i[0]))
中的每个元素 k
,...
- 由
range(0, int(o[0][1]))
中的每个元素 i
组成的数组,...
- -1.
所以它看起来像一个数组的数组;看起来像:
[[[-1, -1, -1], [-1, -1, -1, -1], [], [-1, -1]]]
顺便说一下,您需要更改一些变量名称。 o
和 O
不应用作单字母变量,因为它们与 0
相似,并且您有两个嵌套的 for
循环都在使用(并因此覆盖) i
作为他们的迭代器。
how could I transform this comprehension list into basic for loops?
您的列表理解基本上是三个 for 循环合二为一。你可以这样翻译:
O = []
for i in o:
O1 = []
for k in range(int(i[0])):
O2 = []
for j in range(int(i[0][1])):
O2.append(-1)
O1.append(O2)
O.append(O1)
如何理解这一行?
O = [[[-1 for i in range(int(o[0][1]))] for k in range(int(i[0]))] for i in o]
最简单的方法是从外到内:
- 设置
O
等于... - 一个数组,对于可迭代对象
o
中的每个元素i
,... - 一个数组,对于
range(0,int(i[0]))
中的每个元素k
,... - 由
range(0, int(o[0][1]))
中的每个元素i
组成的数组,... - -1.
所以它看起来像一个数组的数组;看起来像:
[[[-1, -1, -1], [-1, -1, -1, -1], [], [-1, -1]]]
顺便说一下,您需要更改一些变量名称。 o
和 O
不应用作单字母变量,因为它们与 0
相似,并且您有两个嵌套的 for
循环都在使用(并因此覆盖) i
作为他们的迭代器。
how could I transform this comprehension list into basic for loops?
您的列表理解基本上是三个 for 循环合二为一。你可以这样翻译:
O = []
for i in o:
O1 = []
for k in range(int(i[0])):
O2 = []
for j in range(int(i[0][1])):
O2.append(-1)
O1.append(O2)
O.append(O1)