如何在列表中没有括号的情况下获得结果?

时间:2016-09-15 23:19:40

标签: python list

我有一个函数将两个排序列表(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

2 个答案:

答案 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)

那不行吗?