如何忽略范围循环中的重复值

时间:2019-03-01 17:32:10

标签: python python-3.x

我从以下输入开始:

for i in range(3):
  for j in range(3):
    print(i,j)

我得到以下输出:

0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2

如何设计For循环,以免出现反向重复的“坐标”,例如(0,1)和(1,0)或(1,2)和(2,1)?

我想要的嵌套For循环的输出是:

0 0
0 1
0 2
1 1
1 2
2 2

2 个答案:

答案 0 :(得分:3)

这应该起作用,只需将第二个循环缩短一点,以使第一个数字始终大于或等于第二个:

{
  "repository": {
    "issue": {
      "timelineItems": {
        "nodes": [
          {
            "__typename": "ConvertedNoteToIssueEvent"
          },
          {
            "__typename": "AssignedEvent"
          },
          {
            "__typename": "LabeledEvent"
          },
          {
            "__typename": "MovedColumnsInProjectEvent"
          }
        ]
      }
    }
  }
}

答案 1 :(得分:0)

生成这类非重复坐标的另一种方法是使用itertools.combinations_with_replacement。例如:

from itertools import combinations_with_replacement

results = combinations_with_replacement(range(3), 2)
print(*results, sep='\n')
# (0, 0)
# (0, 1)
# (0, 2)
# (1, 1)
# (1, 2)
# (2, 2)