我想为给定列表的可能产品找到一种方法。基本上,索引后面可以跟着一个数字,例如 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 ......我如何更改我的代码以使其具有可扩展性?因此,如果比例为 3,它应该以相同的方式生成 A1A2A3,...。
更新:我认为应该再有一个 for 循环来处理大小并根据该数字累积序列,但到目前为止我无法弄清楚如何去做。