Python - 使用列表理解写出组合的所有元组

Python - Write all tuples of a combination using list comprehension

我想创建所有对 (i, j),这样 i0n-1jin-1。基本上,这些是两个长度为 n.

的列表的所有唯一组合

例如,如果 n=3 那么我想得到

[(0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2)]

如果我可以通过列表理解来做到这一点,那就太好了。漫长的道路将是

n = 3
tuples = []
for i in range(n):
    for j in range(i, n):
         tuples.append((i, j))

我已经尝试过这个列表理解,但没有成功

tuples = [(i,j) for i in range(3) and j in range(i, 3)]

只需切换循环顺序即可:

tuples = [(i,j) for i in range(3) for j in range(i, 3)] 

输出:

Out[425]: [(0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2)]