X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/4af78812d25b28cee283e671c0bd5944133b6ce5..7fda4e3865bb7cc9b6ee15cfd3c62c207f585ec7:/linpy/linexprs.py diff --git a/linpy/linexprs.py b/linpy/linexprs.py index a49f90e..b5864e1 100644 --- a/linpy/linexprs.py +++ b/linpy/linexprs.py @@ -294,21 +294,16 @@ class LinExpr: 2*x + y + 1 """ if expression is None: - if isinstance(symbol, Mapping): - symbol = symbol.items() - substitutions = symbol + substitutions = dict(symbol) else: - substitutions = [(symbol, expression)] - result = self - for symbol, expression in substitutions: + substitutions = {symbol: expression} + for symbol in substitutions: if not isinstance(symbol, Symbol): raise TypeError('symbols must be Symbol instances') - coefficients = [(othersymbol, coefficient) - for othersymbol, coefficient in result._coefficients.items() - if othersymbol != symbol] - coefficient = result._coefficients.get(symbol, 0) - constant = result._constant - result = LinExpr(coefficients, constant) + coefficient*expression + result = self._constant + for symbol, coefficient in self._coefficients.items(): + expression = substitutions.get(symbol, symbol) + result += coefficient * expression return result @classmethod