Python列表理解:用两个变量填充每个内部列表

时间:2019-02-11 08:01:47

标签: python

这可用于创建输出[[0,0],[1、1],[2、2],[0、0],[1、1],[2、2],[0、0 ],[1、1],[2、2]]:

[[k%3 for i in range(2)]for j in range(3)  for k in range(3)]

这可用于创建输出[[0,0],[0,0],[0、0],[1、1],[1、1],[1、1],[2、2 ],[2、2],[2、2]]:

[[j for i in range(2)]for j in range(3)  for k in range(3)]

现在,由于我的目标是获取如下所示的输出:[[0,0],[0,1],[0,2],[1,0],[1、1],[1 ,2],[2、0],[2、1],[2、2]]

我尝试了以下操作,但出现错误:

[[j,k%3 for i in range(2)]for j in range(3)  for k in range(3)]

错误是:

[[j,k%3 for i in range(2)]对于j in range(3)对于k in range(3)]

SyntaxError:语法无效

2 个答案:

答案 0 :(得分:3)

您可以将其创建为元组:

[[(j,k%3) for i in range(2)]for j in range(3)  for k in range(3)]

输出如下:

>>> [[(j,k%3) for i in range(2)]for j in range(3)  for k in range(3)]
[[(0, 0), (0, 0)], [(0, 1), (0, 1)], [(0, 2), (0, 2)], [(1, 0), (1, 0)], [(1, 1), (1, 1)], [(1, 2), (1, 2)], [(2, 0), (2, 0)], [(2, 1), (2, 1)], [(2, 2), (2, 2)]]

编辑:

OP发布的预期输出:

[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]

实现此目的的代码:

  [[j,k] for j in range(3)  for k in range(3)]

答案 1 :(得分:2)

如果预期结果是

[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

您只需要的imo

[[i, k] for i in range(3) for k in range(3)]