有没有办法结合这两个循环?

Posted

技术标签:

【中文标题】有没有办法结合这两个循环?【英文标题】: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) 循环可能会起作用。 【参考方案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 及以上。 谢谢,更新了代码

以上是关于有没有办法结合这两个循环?的主要内容,如果未能解决你的问题,请参考以下文章

结合嵌套的json for循环

尝试将两个跨度与 jQuery 结合在一起,需要帮助循环/迭代

是否可以结合 Rayon 和 Faster?

有没有办法拦截和修改asp.net中的html输出流,以结合javascript?

Django 结合两个没有 Q 的查询

.net 将 API 与不同的目标框架结合在一起