怎么死对这个理解列表的解释

时间:2015-04-27 23:30:05

标签: python-2.7 list-comprehension

我如何理解这一行?

O = [[[-1 for i in range(int(o[0][1]))] for k in range(int(i[0]))] for i in o]

2 个答案:

答案 0 :(得分:0)

最简单的方法是从外面进行:

  • O设为等于...
  • 一个数组,由可迭代i中的每个元素o组成,......
  • 一个数组,由k中的每个元素range(0,int(i[0]))组成,......
  • 一个数组,由i中的每个元素range(0, int(o[0][1]))组成,......
  • -1。

所以它看起来像一个数组数组;看起来像:

 [[[-1, -1, -1], [-1, -1, -1, -1], [], [-1, -1]]]

顺便说一下,你想要改变一些变量名。 oO不应该用作与0相似的单字母变量,并且您有两个嵌套for循环,它们都使用(因此覆盖) i作为迭代器。

答案 1 :(得分:0)

  

我怎样才能将这个理解列表转换为基本的for循环?

你的列表理解基本上是三个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)