简体   繁体   English

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

[英]Python list comprehension: populating each inner-list with two variables

This works for creating the output [[0, 0], [1, 1], [2, 2], [0, 0], [1, 1], [2, 2], [0, 0], [1, 1], [2, 2]]: 这适用于创建输出[[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)]

This works for creating the output [[0, 0], [0, 0], [0, 0], [1, 1], [1, 1], [1, 1], [2, 2], [2, 2], [2, 2]]: 这适用于创建输出[[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)]

Now, since my goal was to get output that looks like this: [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] 现在,由于我的目标是获得如下所示的输出:[[0,0],[0,1],[0,2],[1,0],[1,1],[1,2] ,[2,0],[2,1],[2,2]]

I tried the following, but I got an error: 我尝试了以下操作,但出现错误:

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

The error is: 错误是:

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

SyntaxError: invalid syntax SyntaxError:语法无效

You can create it as a tuple: 您可以将其创建为元组:

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

Output will be like below: 输出将如下所示:

>>> [[(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)]]

EDIT: 编辑:

Expected Output Published by OP: OP发布的预期输出:

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

Code to achieve this: 实现此目的的代码:

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

if the expected result is 如果预期结果是

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

imo you simply need 你只需要

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM