l=['A1','A2','A3','B1','B2','B3','C1','C2','C3','D1','D2','D3'] result = [i + j for i in l for j in l if int(j[1]) == int(i[1]) + 1 or (j[1] == '1' and i[1] == '3')] print(result)
It is output:
['A1A2', 'A1B2', 'A1C2', 'A1D2', 'A2A3', 'A2B3', 'A2C3', 'A2D3', 'A3A1', 'A3B1', 'A3C1', 'A3D1', 'B1A2', 'B1B2', 'B1C2', 'B1D2', 'B2A3', 'B2B3', 'B2C3', 'B2D3', 'B3A1', 'B3B1', 'B3C1', 'B3D1', 'C1A2', 'C1B2', 'C1C2', 'C1D2', 'C2A3', 'C2B3', 'C2C3', 'C2D3', 'C3A1', 'C3B1', 'C3C1', 'C3D1', 'D1A2', 'D1B2', 'D1C2', 'D1D2', 'D2A3', 'D2B3', 'D2C3', 'D2D3', 'D3A1', 'D3B1', 'D3C1', 'D3D1']
If you prefer readability over compactness, expand single-line
l=['A1','A2','A3','B1','B2','B3','C1','C2','C3','D1','D2','D3'] result = [] for i in l: for j in l: if int(j[1]) == int(i[1]) + 1 or (j[1] == '1' and i[1] == '3'): result.append(i+j) print(result)
It outputs the same thing.