У меня есть следующий список списка, в котором во внутреннем списке есть 2 элемента в строковом формате.
neighbor_list = [['Mo0',
'[PeriodicSite: S (1.5952, -0.9210, 37.6032) [0.3333, -0.3333, 0.9458], PeriodicSite: S (0.0000, 1.8419, 37.6032) [0.3333, 0.6667, 0.9458], PeriodicSite: S (3.1903, 1.8419, 37.6032) [1.3333, 0.6667, 0.9458], PeriodicSite: S (1.5952, -0.9210, 34.4734) [0.3333, -0.3333, 0.8671], PeriodicSite: S (0.0000, 1.8419, 34.4734) [0.3333, 0.6667, 0.8671], PeriodicSite: S (3.1903, 1.8419, 34.4734) [1.3333, 0.6667, 0.8671]]'],
['Mo1',
'[PeriodicSite: S (1.5952, -0.9210, 12.7242) [0.3333, -0.3333, 0.3200], PeriodicSite: S (0.0000, 1.8419, 12.7242) [0.3333, 0.6667, 0.3200], PeriodicSite: S (3.1903, 1.8419, 12.7242) [1.3333, 0.6667, 0.3200], PeriodicSite: S (1.5952, -0.9210, 9.5944) [0.3333, -0.3333, 0.2413], PeriodicSite: S (0.0000, 1.8419, 9.5944) [0.3333, 0.6667, 0.2413], PeriodicSite: S (3.1903, 1.8419, 9.5944) [1.3333, 0.6667, 0.2413]]'],
['Mo2',
'[PeriodicSite: S (-1.5952, 0.9210, 30.1636) [-0.3333, 0.3333, 0.7587], PeriodicSite: S (1.5952, 0.9210, 30.1636) [0.6667, 0.3333, 0.7587], PeriodicSite: S (0.0000, 3.6839, 30.1636) [0.6667, 1.3333, 0.7587], PeriodicSite: S (-1.5952, 0.9210, 27.0339) [-0.3333, 0.3333, 0.6800], PeriodicSite: S (1.5952, 0.9210, 27.0339) [0.6667, 0.3333, 0.6800], PeriodicSite: S (0.0000, 3.6839, 27.0339) [0.6667, 1.3333, 0.6800]]'],
['Mo3',
'[PeriodicSite: S (-1.5952, 0.9210, 5.2846) [-0.3333, 0.3333, 0.1329], PeriodicSite: S (1.5952, 0.9210, 5.2846) [0.6667, 0.3333, 0.1329], PeriodicSite: S (0.0000, 3.6839, 5.2846) [0.6667, 1.3333, 0.1329], PeriodicSite: S (-1.5952, 0.9210, 2.1548) [-0.3333, 0.3333, 0.0542], PeriodicSite: S (1.5952, 0.9210, 2.1548) [0.6667, 0.3333, 0.0542], PeriodicSite: S (0.0000, 3.6839, 2.1548) [0.6667, 1.3333, 0.0542]]']]
Первым элементом во внутреннем списке (скажем, Mo0) является центр и все Sво втором пункте находятся окрестности.Сначала я хочу напечатать список центральных атомов, добавленных к окружению, например, Mo0S6, Mo1S6, M02S6 и так далее.Затем я хочу выяснить, существуют ли какие-либо общие S между Mo0, Mo1, Mo2, Mo3, используя их координаты, например, координаты для S в соседнем с Mo0:
S (1.5952, -0.9210, 37.6032)
S (1.5952, -0.9210, 12.7242)
и т. Д.
Я могу получить центр и окружение, выполнив
for i in range(len(neighbor_list)):
center = neighbor_list[i][0]
surroundings = neighbor_list[i][1]
Как мне суммировать количество окружений для каждого центрального атома и найти пересечение между окружением?
Конечная цельчтобы получить матрицу в следующем формате
Mo0S6 Mo1S6 Mo2S6 Mo3S6
Mo0S6 0.0 0.0 0.0 0.0
Mo1S6 0.0 0.0 0.0 0.0
Mo2S6 0.0 0.0 0.0 0.0
Mo3S6 0.0 0.0 0.0 0.0
Все элементы в кадре данных равны 0, потому что в этом списке нет общих символов S.
Может кто-нибудь помочь мне в этом.Заранее спасибо.