我想找到給定列表的可能產品的一種方法。 基本上索引可以跟隨一個數字,旁邊數如A1A2,A2C3 ...或圓形的數目A3D1,D3B1 ...下面,我有一個例子Python使給定列表產品的可擴展性更大
一個例子:
the_list=['A1','A2','A3','B1','B2','B3','C1','C2','C3','D1','D2','D3']
The results should be:
['A1A2','A1B2','A1C2','A1D2','A2A3','A2B3','A2C3','A2D3','A3A1','A3B1','A3C1','A3D1'
'B1A2,'B2A3'...
'C1A2'...']
到目前爲止,我嘗試這樣做:
the_list=['A1','A2','A3','B1','B2','B3','C1','C2','C3','D1','D2','D3']
result=[]
for i in range(len(the_list)):
for k in range((i%3+1),len(the_list)+1,3):
s=str(the_list[i])+str(the_list[k%len(the_list)])
result.append(s)
輸出:
['A1A2', 'A1B2', 'A1C2', 'A1D2', 'A2A3', 'A2B3', 'A2C3', 'A2D3', 'A3B1', 'A3C1',
'A3D1', 'A3A1', 'B1A2', 'B1B2', 'B1C2', 'B1D2', 'B2A3', 'B2B3', 'B2C3', 'B2D3', 'B3B1',
'B3C1', 'B3D1', 'B3A1', 'C1A2', 'C1B2', 'C1C2', 'C1D2', 'C2A3', 'C2B3', 'C2C3', 'C2D3',
'C3B1', 'C3C1', 'C3D1', 'C3A1', 'D1A2', 'D1B2', 'D1C2', 'D1D2', 'D2A3', 'D2B3', 'D2C3',
'D2D3', 'D3B1', 'D3C1', 'D3D1', 'D3A1']
ŧ他的作品很好。但是,我想讓它更具可擴展性,到目前爲止它會生成兩個序列,如A1A2,A1D2 ...我如何更改我的代碼以使其可擴展?所以,如果比例是3,它應該以相同的方式產生A1A2A3 ...。
更新:我覺得應該有一個更for循環,是以大小的關懷和積累基於這個數字序列,但我無法弄清楚迄今爲止如何。
如果我正確讀取結果 - 任何 「連接」(如果視爲網格) - 或者水平/垂直/對角線是候選? –
沒關係 - 我認爲我已經分析了一下 - 看看@Amber建議的'itertools' –