【问题标题】:Is there a way to combine these 2 loops?有没有办法结合这两个循环?
【发布时间】:2022-01-22 18:38:52
【问题描述】:

有没有办法将这两个循环结合起来提高效率?

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

谢谢!

【问题讨论】:

  • 现在编辑。
  • 为什么你认为“组合”它们会使任何东西“更高效”?
  • 如果您的目的是提高它们的效率,请使用列表理解或生成器 例如 ((i,j) for i in range(n) for j in range(i + 1, n + 1 ))
  • 其实已经足够高效了。如果将它们结合起来,程序运行的时间不会明显减少。
  • 我想不出一个简单的方法,但似乎通过range(n * n) 循环可能会起作用。

标签: python for-loop nested-loops


【解决方案1】:

就其他人可以理解和可读的事实而言,您的代码足够高效,因此建议使用。

但是,如果您在 python 中寻找一个单行,那么您可以使用以下一个,但我强烈不推荐它,因为它只会使代码更不可读,只会让其他人头疼

n = 10
print(' \n'.join('{} {}'.format(*item) for item in [ (i,j) for i in range(n) for j in range(i+1,n+1) ]   ) )

这将打印出与您提供的代码完全相同的输出。

【讨论】:

  • if i < j 是不必要的,因为j 被定义为从i+1 及以上。
  • 谢谢,更新了代码
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 2011-10-14
相关资源
最近更新 更多