0

我正在尝试在 python 中实现合并排序

#!/usr/bin/python
import math

def merge_sort(unsorted):
    if(len(unsorted)<2):
        return unsorted
    middle = int(math.floor(len(unsorted)/2))
    left = merge_sort(unsorted[0:middle])
    right = merge_sort(unsorted[middle:])
    return merge(left, right)

def merge(left, right):
    results = []
    while (len(left) > 0 and len(right) > 0 ):
        if(left[0] < right[0]):
            results.append(left.pop(0) )
        else:
            results.append( right.pop(0))

    if (len(left) > 0):
        results.append(left)
    if (len(right) > 0):
        results.append(right)

    return results

print merge_sort(list('7123'))

但是我的结果看起来像这样[['1'], ['2'], ['3'], [['7']]],而不是['7', '1', '2', '3'].

我的语法有什么错误?

4

1 回答 1

5

在这里使用list.extend

if (len(left) > 0):
    results.extend(left)
if (len(right) > 0):
    results.extend(right)

list.appendlist.extend

>>> lis = [1, 2 , 3]
>>> lis.append( [4, 5] )  #appends the whole object at the end of the list
>>> lis
[1, 2, 3, [4, 5]]
>>> lis.extend( [6, 7] )  #appends individual items from the iterable
>>> lis
[1, 2, 3, [4, 5], 6, 7]

帮助list.extend

>>> print list.extend.__doc__
L.extend(iterable) -- extend list by appending elements from the iterable
于 2013-05-21T07:50:33.123 回答