2016-09-29 3 views
0

Ich habe ein Programm, das Arrays von Zahlen und Operatoren erzeugt, wie folgt: Was ich tun möchte, ist diese Art von Array für seinen numerischen Wert mit Reihenfolge der Operationen zu bewerten. Die Array-Länge kann sehr groß sein, aber sie beginnen und enden immer mit einer Nummer und eine Nummer folgt keiner Nummer und ein Operator folgt einem Operator nicht.
Ich denke, ich kann das Modul operator für die Umwandlung der Operator-Zeichenfolgen in tatsächliche Operationen verwenden, aber ich weiß nicht, wie die Reihenfolge der Operationen Teil zu verwalten.Bewerten Array von Operatoren und Zahlen in Python

+0

Der einfachste Weg wäre, die Zeichen in eine Zeichenfolge zu verbinden und das integrierte eval() zu verwenden. Es ist nicht allgemein ratsam, dies zu verwenden, aber ohne Sichtbarkeit auf das größere Bild, dies würde tun, was Sie fragen. –

+0

Falls 'eval' nicht in Frage kommt, werfen Sie einen Blick auf [Rangierbahnhof-Algorithmus] (https://en.wikipedia.org/wiki/Schunting-yard_algorithm). – niemmi

Antwort

0

Sie könnten dies versuchen, ziemlich naiv.

a = [1,'+',6,'*',3,'*',2] 
source = '' 
for i in a: 
    source += str(i) 
print eval(source) # 37 
+2

@ cricket_007 Nein, 'eval (''. Join (map (str, a)))'. –