我在想
我有3組設定
例如 大小 [0,1,2,3,4]
顏色 [red, blue , green]
年分 [1991,2000,2014]

我需要地回的跑這幾個設定不同組合進去模型中
但是我又不想用好幾個 for 包起來
有什麼好方法?

 


 



你可以使用 Python 的 itertools.product 來優雅地產生三個設定的所有組合,而不用寫多層 for 迴圈。

✅ 範例做法:

 

from itertools import product

sizes = [0, 1, 2, 3, 4]
colors = ['red', 'blue', 'green']
years = [1991, 2000, 2014]

# 產生所有組合(笛卡爾積)
for size, color, year in product(sizes, colors, years):
    print(f"size={size}, color={color}, year={year}")
    # 可以把這些參數組合丟進你的模型處理

 

? 好處:
不需要巢狀 for 迴圈

結構清晰且易於維護

易於替換或擴充參數列表

如果你還有進階需求(如固定某些條件或排除某些組合),也可以加條件篩選。例如:

 

for size, color, year in product(sizes, colors, years):
    if size == 0 and year < 2000:
        continue  # 跳過某些特例
    ...



你要將這些組合套入什麼樣的模型流程?我可以幫你整合。

 

 



如何決定順序?
例如我希望從years 第一個 colors第一個 跑 size 0-4

 

 


 



你可以調整 itertools.product 中參數的順序來決定哪一層是最內層(變動最快)、哪一層是最外層(變動最慢)。

? 你說的需求是:
每組輸入應該先固定 year,再固定 color,最後在這組 year+color 下跑 size=0~4

也就是說:
順序是:year → color → size(最內層)

✅ 寫法如下:

 

from itertools import product

sizes = [0, 1, 2, 3, 4]
colors = ['red', 'blue', 'green']
years = [1991, 2000, 2014]

# 把 product 的順序寫成外 → 中 → 內
for year, color, size in product(years, colors, sizes):
    print(f"year={year}, color={color}, size={size}")

 

這樣輸出會像這樣:

 

year=1991, color=red, size=0
year=1991, color=red, size=1
...
year=1991, color=blue, size=0
...
year=2014, color=green, size=4



如果你想 改為 color → year → size,就把順序改成:

 

 

for color, year, size in product(colors, years, sizes):