使用list comprehension创建2-number-tuple列表,其中所有可能的对都最多为N.

时间:2017-09-03 09:19:32

标签: python list-comprehension

我想使用列表理解来创建 2-numbers-tuple - (0,0) , (0,1) , ... (0,N-1) , (1,0) ... (N-1,N-1)的列表。

我使用过这样的内容:[(x,y) for x in range(3) for y in range(x)]其中3是N,但显然无效(输出[(1, 0), (2, 0), (2, 1)])。

我可以用

做到这一点
l = []
for x in range(3):
    for y in range(3):
        l += [(x,y)]

但是如何在单行中构建我想要的列表呢?

编辑列表理解迭代界限中显然存在一个让我感到困惑的错误。将其更改为[(x,y) for x in range(3) for y in range(3)]会解决它。谢谢,抱歉

3 个答案:

答案 0 :(得分:4)

你可以做到

[(x,y) for x in range(3) for y in range(3)]

答案 1 :(得分:3)

您可以使用itertools.product()

list(itertools.product(range(3), repeat=2))

答案 2 :(得分:1)

您提供的代码段(用n代替3)可以写成一行

[(x, y) for x in range(n) for y in range(n)]