使用3个嵌套的for循环不好吗?(或更多!)

时间:2019-02-24 10:41:24

标签: python for-loop architecture nested

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

for i in a[:]:
    print("i in for loop = %s" %i)
    print("\n")
    for x in range(2):
        for y in range(2):
            print(y)
print("A mask for this image can be of row * column config. 1x1, 1x2, 1x3, 2x1,...,3x3:")

某事告诉我,我的方法从来都不是首选。

2 个答案:

答案 0 :(得分:0)

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

如果您有1个嵌套循环算法的复杂度平均为O(n)2,而2个嵌套循环的复杂度则增加到O(n)3。 如果数据结构中有n个元素,则说n = 1000 O(n)2等于1000 * 1000越过数据结构中的元素和O(n)3 1000 * 1000 * 1000。算法的全局复杂度取决于还涉及嵌套循环中的最终函数,并且会增加最终的复杂性。

答案 1 :(得分:0)

通常,嵌套越多,读取代码就越困难。如果您只想为某个范围内的每个xy做某事,可以使用itertools.product

import itertools
for x, y in itertools.product(range(2), range(2)):
    # Do something for every x, y
    print(x, y)

这样,您可以保存一个嵌套,并且仍然可读。甚至可以扩展为其他变量,例如z