2017-08-06 82 views
1

我的代码---->Python:append()方法不允许插入排序?

A = [17, 15, 5, 20, 99, 100] 

left = [] 
right = [] 
left.append(A[ : len(A)/2 ]) 
#right.append(A[ len(A)/2 : ]) 

print("Left Before Sort : {l}".format(l=left)) 

for j in range(1, len(left)): 
     key = left[j] 
     i = j - 1 
     while (i >= 0 and left[i] > key): 
      left[i+1] = left[i] 
      i -= 1 
     left[i+1] = key 




print("Left After Sort {l}".format(l=left)) 

为什么左边是不是得了排序?我尝试了不同的命名......但输出相同。

+3

改为使用'left.extend'。问题是追加一个列表使得列表中的单个元素在更大的列表中。可以这么说,它并没有扩展它。 –

+0

'len(left)== 1'。 '.append(A [:len(A)/ 2]))'将'list'附加到''left''包含'A'的前半部分。你可能想'扩展()' – dhke

+0

扩展或切片,'left = A [:len(A)/ 2]' –

回答

3

问题是你在列表中追加列表。

试试这个: A = [17,15,5,20,99,100]

left=[];right=[] 
left = A[ : len(A)/2 ]   # Here I made change 
#right.append(A[ len(A)/2 : ]) 

print "Left Before Sort : ",left 

for j in range(len(left)): 
     key=left[j] 
     i=j-1 
     while (i>=0 and left[i]>key): 
      left[i+1]=left[i] 
      i -=1 
     left[i+1]=key 




print "Left After Sort ",left 

输出

Left Before Sort : [17, 15, 5] 
Left After Sort [5, 15, 17] 

如果你真的要追加然后尝试通过追加每个元素一个一个:

for i in A[:len(A)/2]: 
    left.append(i)