Python 如何获得列表中没有括号的结果?

Python 如何获得列表中没有括号的结果?,python,list,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]:

我有一个函数,它将两个排序列表(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
def合并(a,b):
c=[]
i=j=0
而i
您必须单独添加每个值,如下所示:

if i < len(a):
    for k in a[i:]:
        c.append(k)
如果i
您应该在最后一行中使用:

if i < len(a):
    c.extend(a[i:])
if j < len(b):
    c.extend(b[j:])

这不管用吗?

查找列表的
.extend()
方法。旁注:如果这不是一个类,不要重新发明轮子。Python已经包括了这方面的电池:。在
list
中包装可以得到这里看到的确切结果,因此用
list(heapq.merge(a,b))
替换
是等效的(可能更快,尤其是当要合并的ITerable数量增加时)。理论上,连接和排序效率低下,因为理论上的排序算法无法利用现有的顺序。在实践中,Python的TimSort混合排序算法可以很好地处理这种情况(它利用了输入中现有的顺序),因此,是的,只是“从头开始”连接和排序通常是好的。不过我怀疑OP是为一个类编写的。如果不是连接和排序或
heapq,合并将是一种方法(后者通常平均速度稍慢,但可以流化输入和输出以降低内存成本)。重复的
append
ing是浪费;这就是存在
extend
的原因。
a = [1, 3, 5]
b = [2, 4, 6]

c = a + b

c.sort()

print(c)