思路:
1初始化新列表l=l1或l2头节点值比较小的一个。
2确定两个链表的游标,避免与初始化时形成重复,
3判断当前值小的一个,加入新列表当中,并移动对应游标
4循环重复步骤3

#class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

#
# 
# @param l1 ListNode类 
# @param l2 ListNode类 
# @return ListNode类
#
class Solution:
    def mergeTwoLists(self , l1 , l2 ):
       #分别判断两个链表是否为空
        if not l1:
            return l2
        if not l2:
            return l1

        #以下处理两个链表都不为空的情况,
        ret = l1 if l1.val<=l2.val else l2 #以较小的作为新链表的起使
        l=ret #新链表的游标

        #移动已加入新链表的l1或者l2链表,避免重复
        cur1=l1 if ret is l2 else l1.next
        cur2=l2 if ret is l1 else l2.next

        while cur1 or cur2:
            #取到各游标当前值,只会出现一个游标是空的情况,为空赋值另一个游标当前值加一,保证该值不会使用
            val1 = cur1.val if cur1 else cur2.val+1
            val2 = cur2.val if cur2 else cur1.val+1

            if val1<=val2:
                l.next = cur1
                l = l.next
                cur1 = cur1.next

            else:
                l.next = cur2
                l = l.next
                cur2 = cur2.next

        #链表最后需要指向空
        l.next = None
        return ret