On Oct 17, 7:14 am, Dave Angel <d...@davea.name> wrote: > On 10/16/2012 09:54 PM, Kevin Anthony wrote: > > > > > > > > > > > I've been teaching myself list comprehension, and i've run across something > > i'm not able to convert. > > > here's the original code for matrix multiplcation > > > retmatrix = Matrix(self.__row,other.__col) > > for m in range(0,retmatrix.__row): > > for n in range(0,retmatrix.__col): > > product = 0 > > for p in range(1,self.__col+1): > > product += (self.__matrix[m][p] * other.__matrix[p][n]) > > retmatrix.__matrix[m][n] = product > > > Here is what i have so far: > > retmatrix.__matrix = [[ product = product + (self.__matrix[m][p]* > > other.__matrix[p][n]) > > if product else self.__matrix[m][p]* other.__matrix[p][n]) > > for p in range(0,self.col) > > for n in range(0,self.col)] > > for m in range(0,self.__row)] > > > But i know that isn't correct, can someone nudge my in the right direction? > > The biggest thing to learn about list comprehensions is when not to use > them. I can't imagine how your latter version (even if correct) is > clearer than the first. > > -- > > DaveA
Try rewriting using dot from operator import mul def dot(p,q): return reduce(mul, [x*y for x,y in zip(p,q)]) # the [] can become () and avoiding object-orientation (at least to start with) -- http://mail.python.org/mailman/listinfo/python-list