Добрый день!
Есть два списка:
atoms = ['Co1', 'Co2', 'Co3', 'Co4', 'Co5', 'Co6', 'Co7', 'Co8']
dopedatoms = ['Mn1', 'Mn2', 'Mn3', 'Mn4', 'Mn5', 'Mn6', 'Mn7', 'Mn8']
Нужно сгенерировать все возможные комбинации, взяв из первого списка 7 элементов, а из второго 1:
['Co8', 'Co2', 'Co3', 'Co4', 'Co5', 'Co6', 'Co7', 'Mn1']
['Co8', 'Co1', 'Co3', 'Co4', 'Co5', 'Co6', 'Co7', 'Mn2']
['Co8', 'Co1', 'Co2', 'Co4', 'Co5', 'Co6', 'Co7', 'Mn3']
['Co8, 'Co1', 'Co2', 'Co3', 'Co5', 'Co6', 'Co7', 'Mn4']
['Co8', 'Co1', 'Co2', 'Co3', 'Co4', 'Co6', 'Co7', 'Mn5']
['Co8', 'Co1', 'Co2', 'Co3', 'Co4', 'Co5', 'Co7', 'Mn6']
и т.д.
а затем взять из первого списка 6 элементов, а из второго 2:
['Co8', 'Co2', 'Co3', 'Co4', 'Co5', 'Co6', 'Mn7', 'Mn1']
['Co1', 'Co7', 'Co8', 'Co4', 'Co5', 'Co6', 'Mn3', 'Mn2']
...
и т.д.
И так нужно сгенерировать все комбинации, уменьшая число элементов из первого списка и увеличивая из второго.
В комбинациях не должно быть повторений элементов с одинаковым номером (Co1 и Mn1 и т.д.):
['Co1, 'Co2', 'Co3', 'Co4', 'Co5', 'Co6', 'Mn1', 'Mn2']
['Co1', 'Co7', 'Co8', 'Co4', 'Co5', 'Co6', 'Mn7', 'Mn8']
...
и т.д.
В дальнейшем вместо Co1, Co2... будут указаны координаты в формате xyz (Пример: 0.118167 0.376788 0.873409)
Пробовал так:
comb1 = itertools.combinations(atoms, 6)
comb2 = itertools.combinations(dopedatoms, 2)
result = itertools.product(comb1, comb2)
но это приводит к появлению повторяющихся элементов.