Python 使用3个嵌套for循环是一种不好的做法吗?(或更多!)
我一直想知道,像专业人士一样编写代码的最佳实践是什么 因为我在一个[:]: 循环打印输入=%s%i 打印\n 对于范围2中的x: 对于范围2中的y: 普林蒂 打印此图像的掩码可以是行*列配置。1x1、1x2、1x3、2x1、…、3x3:Python 使用3个嵌套for循环是一种不好的做法吗?(或更多!),python,for-loop,architecture,nested,Python,For Loop,Architecture,Nested,我一直想知道,像专业人士一样编写代码的最佳实践是什么 因为我在一个[:]: 循环打印输入=%s%i 打印\n 对于范围2中的x: 对于范围2中的y: 普林蒂 打印此图像的掩码可以是行*列配置。1x1、1x2、1x3、2x1、…、3x3: 有些事情告诉我,我的方法从来都不是首选。这是一种尽可能避免的做法,因为嵌套循环的数量和效率是直接相关的 若有1个嵌套循环,则算法的平均复杂度为On2,2个嵌套循环的复杂度增加到On3。 如果数据结构中有n个元素,那么n=1000 On2相当于1000*1000跨
有些事情告诉我,我的方法从来都不是首选。这是一种尽可能避免的做法,因为嵌套循环的数量和效率是直接相关的 若有1个嵌套循环,则算法的平均复杂度为On2,2个嵌套循环的复杂度增加到On3。
如果数据结构中有n个元素,那么n=1000 On2相当于1000*1000跨越数据结构中的元素,On3 1000*1000*1000。算法的全局复杂性也取决于嵌套循环中的最终函数,并且会增加最终的复杂性。通常,嵌套越多,代码越难读懂。如果您只想对某个范围内的每个x和y执行某些操作,则可以使用itertools.product: 进口itertools 对于itertools.productrange2,range2中的x,y: 为每一个x,y做点什么 printx,y
这样,您可以保存一个嵌套,并且它仍然是可读的。这甚至可以扩展为一个附加变量,例如z。我想你的意思是在^2和^3上。虽然这在一般情况下可能是正确的,但对于问题中的代码,他在内部循环范围2中只有两个元素。你是对的,全局复杂性取决于嵌套循环的数量和它们内部的可选函数。你试图用这些代码实现什么?您可以用print0101替换两个内部循环。你的问题没有一般的答案。有许多替代嵌套循环的方法。根据代码的意图,这些可能是更好的选择,也可能不是。我打算为线性过滤制作一个可移动的窗口。我知道这是抽象的,多年来我一直有这个问题。我的老师没有招待我。