有没有办法结合这两个循环?
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
及以上。
谢谢,更新了代码以上是关于有没有办法结合这两个循环?的主要内容,如果未能解决你的问题,请参考以下文章
尝试将两个跨度与 jQuery 结合在一起,需要帮助循环/迭代