python merge sort implementation results in nested lists -


i'm attempting implement merge sort in 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 , 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')) 

however result looks [['1'], ['2'], ['3'], [['7']]] instead of ['7', '1', '2', '3'].

what's error in syntax?

use list.extend here:

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

list.append vs list.extend:

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

help on list.extend:

>>> print list.extend.__doc__ l.extend(iterable) -- extend list appending elements iterable 

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -