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

作者:小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循环嵌套的代码,领导都夸我能干!

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章