我有一个函数将两个排序列表(a,b)合并为一个排序的(c)。如果给定列表具有不同的长度,我需要将最长的其余列表插入到列表c中。但是我这样做的方式 - 它在列表c中给出带括号的结果(例如,如果a = [1,3,5]并且b = [2,4,6]则函数返回[1,2,3] ,4,5,[6]]。我怎样才能摆脱那些括号?
这是我的代码
def merge(a,b):
c = []
i = j = 0
while i < len(a) and j < len(b):
if a[i] < b[j]:
c.append(a[i])
i = i + 1
elif b[j] < a[i]:
c.append(b[j])
j = j + 1
elif a[i] == b[j]:
c.append(a[i])
c.append(b[j])
i = i + 1
j = j + 1
if i < len(a):
c.append(a[i:])
if j < len(b):
c.append(b[j:])
return c
答案 0 :(得分:1)
你必须像这样单独添加每个值:
if i < len(a):
for k in a[i:]:
c.append(k)
答案 1 :(得分:1)
您应该在最后一行使用.extend()
:
if i < len(a):
c.extend(a[i:])
if j < len(b):
c.extend(b[j:])
因为a[i:]
和b[j:]
将成为列表
但我不明白你为什么不用现有方法来达到最终结果:
a = [1, 3, 5]
b = [2, 4, 6]
c = a + b
c.sort()
print(c)
那不行吗?