无法对Python进行排序3

问题描述:

试图对手动给出的数字进行排序。 给出的数字是:[1,10,8,9,4,6,5,2,7] 要通过在整个列表中找到第一个最小元素进行排序,然后从原始列表(list_0)中删除并添加/附加到新列表(list_final).Need [1,2,4,5,6,7,8,9,10]作为输出,我在哪里出错了?无法对Python进行排序3

list_0=[1,10,8,9,4,6,5,2,7] 
list_final=[] 
small=100 
for i in list_0: 
    for j in range(len(list_0)): 
     if i<small: 
      small=i 
      list_0.remove(small) 
      list_final.insert(j,small) 
print("original list :",list_0) 
print("sorted list",list_final) 

OUTPUT来:

原始列表:[10,8,9,4,6,5,2,7]

排序列表[1]

+3

永远不会改变你正在迭代的列表! (在这种情况下为'list_0')。这几乎总是会以泪结束。为什么不只是使用Python的排序呢? –

+0

你永远不会用Python这样做。有没有理由不使用'sorted(list_0)'?另外,“编译器错误”?? – hop

+0

@hiroprotagonist感谢您的建议。排序()很好,但试图通过我自己来完成内部过程。 – CodeManga

选择排序的一个更Python版本。这只是selection sort code from wikipedia的python翻译。该代码在那里有很好的评论...

lst = [1, 10, 8, 9, 4, 6, 5, 2, 7] 

for i in range(len(lst)): 
    min_index = lst.index(min(lst[i:])) # find the next min_index > i 
    if min_index != i: 
     lst[i], lst[min_index] = lst[min_index], lst[i] # swap 

print(lst) # [1, 2, 4, 5, 6, 7, 8, 9, 10] 

我想你应该这样做:

list_0 = [1,10,8,9,4,6,5,2,7] 
list_final = sorted(list_0) 
+0

输出非常精确,但我试图做没有任何预定义的函数帮助。 – CodeManga

+0

这个“sorted()函数”在内部执行什么类型的排序? – CodeManga

好吧,我用我的手机,并提出了这个代码。 我有点忙,但我希望这可以帮助你。我也想出了一个python list tutorial very soon.

我会包括你的问题,并提供更好的解决方案。

现在很忙。

这是代码。

list_O=[1,10,8,9,4,6,5,2,7] 
    list_final=[] 
    index=0 
    #min_item=min(list_O) 
    while index<len(list_O): 
     min_item=min(list_O) 
     list_final.append(min_item) 
     list_O.remove(min_item) 
     index+=1 
    print (list_final) 

这里有一个形象:

The screenshot of the solution.

+1

list_O = [1,10,8,9,4,6,5,2,7] list_final = [] 索引= 0 #min_item =分钟(list_O) 而指数

最后的代码后,所有的帮助guys.Thank你!

@hop @andrepogg @Godson狂喜Chijioke @hiro主角

list_0=[1,10,8,9,4,6,5,2,7] 
list_final=[] 
small=0 
for i in range(len(list_0)): 
    small=min(list_0) 
    list_final.append(small) 
    list_0.remove(small) 
print (list_final) 

OUTPUT:

[1,2,4,5,6,7,8,9,10]

好的...我仍然在你的问题...

试试这个代码。

你会得到期望的结果

list_O=[1,10,8,9,4,6,5,2,7] 
    list_final=[] 
    for i in list_O: 
     for j in range(len(list_O)): 
      min_item=min(list_O) 
      list_final.append(min_item) 
      list_O.remove(min_item) 
    print (list_final)