指定されたリストの可能な製品の方法を見つけたいと思います。基本的に、インデックスの後には、A1A2、A2C3 ... または循環番号 A3D1、D3B1 ... などのその番号の隣にある番号を続けることができます。以下に例を示します。
例:
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 などの 2 つのシーケンスが生成されます...スケーラブルにするためにコードを変更するにはどうすればよいですか? したがって、スケールが 3 の場合、同じ方法で A1A2A3 を生成する必要があります。
更新:サイズを処理し、その数に基づいてシーケンスを累積する for ループがもう 1 つあるはずですが、これまでのところ方法がわかりませんでした。