熱線電話:13121318867

登錄
首頁精彩閱讀組長說一個函數不能超過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循環嵌套的代碼,領導都夸我能干!

?


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢