В конце концов, решение было довольно простым, просто с использованием «product» от itertools и библиотеки «pymatgen».
phase_space=['Ba','Ti','O']
maxi=5
list1=[]
for ii in range(len(phase_space)):
list1.append(list(range(1,1+maxi)))
new_list=list(product(*list1))
formulas=dict()
formula_list=[]
for ii in range(len(phase_space)):
formulas[phase_space[ii]]=1
for ii in range(len(new_list)):
for jj in range(len(phase_space)):
formulas[phase_space[jj]]=new_list[ii][jj]
comp = mg.Composition.from_dict(formulas)
if len(list(comp.as_dict().values()))>=2:
formula_list.append(comp.alphabetical_formula)
print(formula_list)
В таком случае вывод получается по желанию:
['Ba1 O1 Ti1', 'Ba1 O2 Ti1', 'Ba1 O3 Ti1', 'Ba1 O4 Ti1', 'Ba1 O5 Ti1', 'Ba1 O1 Ti2', 'Ba1 O2 Ti2', 'Ba1 O3 Ti2', 'Ba1 O4 Ti2', 'Ba1 O5 Ti2', 'Ba1 O1 Ti3', 'Ba1 O2 Ti3', 'Ba1 O3 Ti3', 'Ba1 O4 Ti3', 'Ba1 O5 Ti3', 'Ba1 O1 Ti4', 'Ba1 O2 Ti4', 'Ba1 O3 Ti4', 'Ba1 O4 Ti4', 'Ba1 O5 Ti4', 'Ba1 O1 Ti5', 'Ba1 O2 Ti5', 'Ba1 O3 Ti5', 'Ba1 O4 Ti5', 'Ba1 O5 Ti5', 'Ba2 O1 Ti1', 'Ba2 O2 Ti1', 'Ba2 O3 Ti1', 'Ba2 O4 Ti1', 'Ba2 O5 Ti1', 'Ba2 O1 Ti2', 'Ba2 O2 Ti2', 'Ba2 O3 Ti2', 'Ba2 O4 Ti2', 'Ba2 O5 Ti2', 'Ba2 O1 Ti3', 'Ba2 O2 Ti3', 'Ba2 O3 Ti3', 'Ba2 O4 Ti3', 'Ba2 O5 Ti3', 'Ba2 O1 Ti4', 'Ba2 O2 Ti4', 'Ba2 O3 Ti4', 'Ba2 O4 Ti4', 'Ba2 O5 Ti4', 'Ba2 O1 Ti5', 'Ba2 O2 Ti5', 'Ba2 O3 Ti5', 'Ba2 O4 Ti5', 'Ba2 O5 Ti5', 'Ba3 O1 Ti1', 'Ba3 O2 Ti1', 'Ba3 O3 Ti1', 'Ba3 O4 Ti1', 'Ba3 O5 Ti1', 'Ba3 O1 Ti2', 'Ba3 O2 Ti2', 'Ba3 O3 Ti2', 'Ba3 O4 Ti2', 'Ba3 O5 Ti2', 'Ba3 O1 Ti3', 'Ba3 O2 Ti3', 'Ba3 O3 Ti3', 'Ba3 O4 Ti3', 'Ba3 O5 Ti3', 'Ba3 O1 Ti4', 'Ba3 O2 Ti4', 'Ba3 O3 Ti4', 'Ba3 O4 Ti4', 'Ba3 O5 Ti4', 'Ba3 O1 Ti5', 'Ba3 O2 Ti5', 'Ba3 O3 Ti5', 'Ba3 O4 Ti5', 'Ba3 O5 Ti5', 'Ba4 O1 Ti1', 'Ba4 O2 Ti1', 'Ba4 O3 Ti1', 'Ba4 O4 Ti1', 'Ba4 O5 Ti1', 'Ba4 O1 Ti2', 'Ba4 O2 Ti2', 'Ba4 O3 Ti2', 'Ba4 O4 Ti2', 'Ba4 O5 Ti2', 'Ba4 O1 Ti3', 'Ba4 O2 Ti3', 'Ba4 O3 Ti3', 'Ba4 O4 Ti3', 'Ba4 O5 Ti3', 'Ba4 O1 Ti4', 'Ba4 O2 Ti4', 'Ba4 O3 Ti4', 'Ba4 O4 Ti4', 'Ba4 O5 Ti4', 'Ba4 O1 Ti5', 'Ba4 O2 Ti5', 'Ba4 O3 Ti5', 'Ba4 O4 Ti5', 'Ba4 O5 Ti5', 'Ba5 O1 Ti1', 'Ba5 O2 Ti1', 'Ba5 O3 Ti1', 'Ba5 O4 Ti1', 'Ba5 O5 Ti1', 'Ba5 O1 Ti2', 'Ba5 O2 Ti2', 'Ba5 O3 Ti2', 'Ba5 O4 Ti2', 'Ba5 O5 Ti2', 'Ba5 O1 Ti3', 'Ba5 O2 Ti3', 'Ba5 O3 Ti3', 'Ba5 O4 Ti3', 'Ba5 O5 Ti3', 'Ba5 O1 Ti4', 'Ba5 O2 Ti4', 'Ba5 O3 Ti4', 'Ba5 O4 Ti4', 'Ba5 O5 Ti4', 'Ba5 O1 Ti5', 'Ba5 O2 Ti5', 'Ba5 O3 Ti5', 'Ba5 O4 Ti5', 'Ba5 O5 Ti5']