Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用3个嵌套for循环是一种不好的做法吗?(或更多!)_Python_For Loop_Architecture_Nested - Fatal编程技术网

Python 使用3个嵌套for循环是一种不好的做法吗?(或更多!)

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跨

我一直想知道,像专业人士一样编写代码的最佳实践是什么

因为我在一个[:]: 循环打印输入=%s%i 打印\n 对于范围2中的x: 对于范围2中的y: 普林蒂 打印此图像的掩码可以是行*列配置。1x1、1x2、1x3、2x1、…、3x3:
有些事情告诉我,我的方法从来都不是首选。

这是一种尽可能避免的做法,因为嵌套循环的数量和效率是直接相关的

若有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替换两个内部循环。你的问题没有一般的答案。有许多替代嵌套循环的方法。根据代码的意图,这些可能是更好的选择,也可能不是。我打算为线性过滤制作一个可移动的窗口。我知道这是抽象的,多年来我一直有这个问题。我的老师没有招待我。