说明
1、左乘法约定为数乘,即乘以整数n,链表长度增加n倍。
尝试非数乘:即当两个链表相乘时,用它们的数据域对应相乘的每个节点的值。
2、右乘法也要重载,否则右乘number*node会报错,加一行:__rmul__=__mul__。
实例
def__mul__(self,other): iftype(other)isNode: n1,n2=self.values,other.values product=[p[0]*p[1]forpinzip(n1,n2)] returnNode.build(product) ifother<0ortype(other)isnotint: raiseTypeError("otherisanon-negetiveInteger") ifother==0:returnNode() ret=self.copy() for_inrange(1,other): self+=ret returnself __rmul__=__mul__ ''' >>>a=Node()+range(1,3) >>>a*0 Node(None->None) >>>a*1 Node(1->2->None) >>>a*2 Node(1->2->1->2->None) >>>a*5 Node(1->2->1->2->1->2->1->2->1->2->None) >>> >>>3*a Node(1->2->1->2->1->2->None) >>>a Node(1->2->None) >>>a*=5 >>>a Node(1->2->1->2->1->2->1->2->1->2->None) >>> >>> >>>a=Node()+range(1,8) >>>b=Node(2)*7 >>>a*b Node(2->4->6->8->10->12->14->None) >>>b*a Node(2->4->6->8->10->12->14->None) >>> '''
以上是python链表的乘法问题,希望对大家有所帮助。更多Python学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。