Python 合并两个列表时出错

Python 合并两个列表时出错,python,list,while-loop,Python,List,While Loop,我正在编写一个函数mergeL1,L2,它接受两个列表输入并合并它们。但是,当我运行它时,我得到一个错误:TypeError:不支持的+操作数类型:'NoneType'和'str'有人能帮我吗 def merge(L1,L2): T = [] subscript = 0 while len(L1) > 0 and len(L2) > 0: if L1[subscript] < L2[subscript]: T.append(str(L1[

我正在编写一个函数mergeL1,L2,它接受两个列表输入并合并它们。但是,当我运行它时,我得到一个错误:TypeError:不支持的+操作数类型:'NoneType'和'str'有人能帮我吗

def merge(L1,L2):
  T = []
  subscript = 0
  while len(L1) > 0 and len(L2) > 0:
      if L1[subscript] < L2[subscript]:
        T.append(str(L1[subscript])) + "," + str(L2[subscript])
      elif L1[subscript] == L2[subscript]:
        del L2[subscript]
        T.append(L1[subscript])
      elif L1[subscript] > L2[subscript]:
        T.append(str(L2[subscript])) + "," + str(L1[subscript])
      subscript += 1
  return T

# print merge([0,2,4,6,8] , [1,3,5,7]) should return [0,1,2,3,4,5,6,7,8]
# I`m assuming that the input lists are sorted.

这是一种正确的合并方式,虽然不是实际编写它的最佳方式,但它符合您的方法:

def merge(L1, L2):
    T = []
    subscript1 = 0
    subscript2 = 0
    while len(L1) > subscript1 and len(L2) > subscript2:
        if L1[subscript1] < L2[subscript2]:
            T.append(L1[subscript1])
            subscript1 += 1
        elif L1[subscript1] == L2[subscript2]:
            T.append(L1[subscript1])
            subscript1 += 1
            subscript2 += 1
        elif L1[subscript1] > L2[subscript2]:
            T.append(L2[subscript2])
            subscript2 += 1
    T.extend(L1[subscript1:])
    T.extend(L2[subscript2:])
    return T

不能直接在t中添加逗号;它们仅在显示T时使用。相反,您只需将L1和L2的两个当前元素中较小的元素添加到T。如果两者大小相同,则只添加一次。每次添加来自L1或L2或两者的元素时,都会增加相应的下标。一旦你用尽了一个列表,你只需将其余的项目从另一个添加到T的末尾。注意,你不必检查哪个列表已经完成;用空列表扩展T是不可行的。

为什么不添加,然后再考虑错误的含义。然后可能会打印您在之间的值+查看带有T的行中的参数。追加错误的行应该是T.extend[L1[subscript],L2[subscript]]接下来,了解类型是什么,以及整数、字符串和列表之间的差异。另外,了解Python中的列表。仅仅因为使用逗号来显示列表并不意味着列表实际上包含逗号,并且在构建列表时需要将逗号添加到t中。