class Solution(object):
def addTwoNumbers(self, l1, l2):
l3 = ListNode(0)
current = l3
carry = 0
while l1 or l2: # 1,1 | None,1 | 1,None
# Pad 0 if None
if l1 is None:
l1v = 0
else:
l1v = l1.val
if l2 is None:
l2v = 0
else:
l2v = l2.val
# Sum
tmp = l1v + l2v + carry
if tmp >= 10:
x = tmp%10
carry = int(tmp/10)
else:
x = tmp
carry = 0
# Assign value
current.next = ListNode(x)
current = current.next
if l1 is not None:
l1 = l1.next
if l2 is not None:
l2 = l2.next
if carry != 0:
current.next = ListNode(carry)
return l3.next