【问题标题】:How to ignore duplicate values in range loop如何忽略范围循环中的重复值
【发布时间】:2019-03-01 17:32:09
【问题描述】:

我从这个输入开始:

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

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    这应该可行,只需缩短第二个循环,使第一个数字始终大于或等于第二个:

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

    【讨论】:

      【解决方案2】:

      另一种生成此类非重复坐标的方法是使用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)
      

      【讨论】:

        猜你喜欢
        • 2016-01-08
        • 2016-12-12
        • 1970-01-01
        • 2023-03-31
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多