projects
/
linpy.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
4af7881
)
Fix LinExpr.subs() implementation
author
Vivien Maisonneuve
<v.maisonneuve@gmail.com>
Tue, 19 Aug 2014 09:47:12 +0000
(11:47 +0200)
committer
Vivien Maisonneuve
<v.maisonneuve@gmail.com>
Tue, 19 Aug 2014 12:35:41 +0000
(14:35 +0200)
linpy/linexprs.py
patch
|
blob
|
history
diff --git
a/linpy/linexprs.py
b/linpy/linexprs.py
index
a49f90e
..
b5864e1
100644
(file)
--- a/
linpy/linexprs.py
+++ b/
linpy/linexprs.py
@@
-294,21
+294,16
@@
class LinExpr:
2*x + y + 1
"""
if expression is None:
2*x + y + 1
"""
if expression is None:
- if isinstance(symbol, Mapping):
- symbol = symbol.items()
- substitutions = symbol
+ substitutions = dict(symbol)
else:
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')
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
return result
@classmethod