После многократного поиска мне нужна помощь.
У меня есть список списков кортежей. Каждый список внутри списка списка представляет собой определенное количество формул в моей системе. Любой элемент в этом списке является кортежем, который представляет тип элемента (переменная, параметр, константа, операция...) и имя элемента. Например, для формул x1 + x2 + A1, x1-x3 и sin (x2) + A1 мы будем иметь:
[
[('VAR', 'x1'), ('PLUS', '+'), ('VAR', 'x2'), ('PLUS', '+'), ('PAR', 'A1')],
[('VAR', 'x1'), ('LESS', '-'), ('VAR', 'x3')],
[('SIN', 'sin'), ('VAR', 'x2'), ('PLUS', '+'), ('PAR', 'A1')]
]
Я пытаюсь определить, в какой формуле появляется каждая переменная. В приведенном выше примере я имею, что переменная x1 имеет формулу 1 и 2, переменная x2 находится по формуле 1 и 3 и x3 в формуле 2, поэтому мой вывод будет примерно таким:
[
['x1', 1, 2],
['x2', 1, 3],
['x3', 2],
]
В настоящий момент у меня очень неэффективный код, который вообще не работает, но вот он:
cont = 0
for subL1 in L:
for subL2 in L:
if len(subL1) != 1 and len(subL2) != 1:
if subL1 != subL2 and subL2:
for x,y in subL1:
for z,t in subL2:
if ( x == 'VAR'
and z == 'VAR'
and y == t
):
print "Variable", y , "repeated"
else:
print "list with 1 lenght\n"
subL1.pop(0)
cont = cont + 1