登录
首页精彩阅读组长说一个函数不能超过2个for循环,我这么这样写之后被
组长说一个函数不能超过2个for循环,我这么这样写之后被
2022-06-30
收藏

作者:小K

来源:麦叔编程

众所周知,一段代码中出现多个(3个以上)的for循环,代码将会变得不易被人类所阅读(超人除外)。

所以很多公司的开发手册也会推荐不要一个函数中写多个(3个以上)for循环。

组长说一个函数不能超过2个for循环,我这么这样写之后被

小K表示,规矩是死的,但码农是活的,今天带大家学习怎么用一个for循环实现多个for循环的逻辑。

多个for循环打印9999乘法表

list1 = range(1,10) list2 = range(1,10) list3 = range(1,10) list4 = range(1,10) for item1 in list1: for item2 in list2: for item3 in list3: for item4 in list4: print(f"{item1} x {item2} x {item3} x {item4} = {item1*item2*item3*item4}") 

运行结果:

...... ...... 9 x 9 x 7 x 5 = 2835 9 x 9 x 7 x 6 = 3402 9 x 9 x 7 x 7 = 3969 9 x 9 x 7 x 8 = 4536 9 x 9 x 7 x 9 = 5103 9 x 9 x 8 x 1 = 648 9 x 9 x 8 x 2 = 1296 9 x 9 x 8 x 3 = 1944 9 x 9 x 8 x 4 = 2592 9 x 9 x 8 x 5 = 3240 9 x 9 x 8 x 6 = 3888 9 x 9 x 8 x 7 = 4536 9 x 9 x 8 x 8 = 5184 9 x 9 x 8 x 9 = 5832 9 x 9 x 9 x 1 = 729 9 x 9 x 9 x 2 = 1458 9 x 9 x 9 x 3 = 2187 9 x 9 x 9 x 4 = 2916 9 x 9 x 9 x 5 = 3645 9 x 9 x 9 x 6 = 4374 9 x 9 x 9 x 7 = 5103 9 x 9 x 9 x 8 = 5832 9 x 9 x 9 x 9 = 6561 

这四个for循环看着还好,能接受。

但是在实际开发的情况很复杂的多,要一层层往上推变量。

下面小K将使用一个for循环来完成上面的功能,如果你有兴趣试试可以在此处暂停,自己先试试。

一个for循环再打印9999乘法表

from itertools import product

list1 = range(1,10)
list2 = range(1,10)
list3 = range(1,10)
list4 = range(1,10) for item1,item2,item3,item4 in product(list1, list2, list3, list4):
    print(f"{item1} x {item2} x {item3} x {item4} = {item1*item2*item3*item4}")

运行结果:

...... ...... 9 x 9 x 7 x 5 = 2835 9 x 9 x 7 x 6 = 3402 9 x 9 x 7 x 7 = 3969 9 x 9 x 7 x 8 = 4536 9 x 9 x 7 x 9 = 5103 9 x 9 x 8 x 1 = 648 9 x 9 x 8 x 2 = 1296 9 x 9 x 8 x 3 = 1944 9 x 9 x 8 x 4 = 2592 9 x 9 x 8 x 5 = 3240 9 x 9 x 8 x 6 = 3888 9 x 9 x 8 x 7 = 4536 9 x 9 x 8 x 8 = 5184 9 x 9 x 8 x 9 = 5832 9 x 9 x 9 x 1 = 729 9 x 9 x 9 x 2 = 1458 9 x 9 x 9 x 3 = 2187 9 x 9 x 9 x 4 = 2916 9 x 9 x 9 x 5 = 3645 9 x 9 x 9 x 6 = 4374 9 x 9 x 9 x 7 = 5103 9 x 9 x 9 x 8 = 5832 9 x 9 x 9 x 9 = 6561 

后记

使用了product方法之后,虽然从4个for循环降到1个for循环,但是代码更不易读了。

有什么办法能再让多个for的代码更易读呢?

有!加一行代码可实现!

解决方法:

from itertools import product # 用来打印九九九九乘法的函数 def print_9999_table(): list1 = range(1,10)
  list2 = range(1,10)
  list3 = range(1,10)
  list4 = range(1,10) for item1,item2,item3,item4 in product(list1, list2, list3, list4):
      print(f"{item1} x {item2} x {item3} x {item4} = {item1*item2*item3*item4}")

好好写清楚代码注释,写N个for循环嵌套的代码,领导都夸我能干!


数据分析咨询请扫描二维码

客服在线
立即咨询