2017-01-18 2 views
-4

Es wurde versucht, die manuell angegebenen Zahlen zu sortieren. Die angegebenen Nummern lauten: [1,10,8,9,4,6,5,2,7] Sortieren nach dem kleinsten Element zuerst in der gesamten Liste, dann Entfernen von der ursprünglichen Liste (list_0) und Hinzufügen/an neue Liste anhängen (list_final) .Need [1,2,4,5,6,7,8,9,10] als Ausgabe, wo ging ich falsch?Python 3 kann nicht sortiert werden

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 kommen:

ursprüngliche Liste: [10, 8, 9, 4, 6, 5, 2, 7]

sortierte Liste [1]

+3

nie ändern Sie die Liste, die Sie durchlaufen! (in diesem Fall 'list_0'). Das wird fast immer in Tränen enden. und warum nicht einfach Pythons sortieren? –

+0

Das würde man in Python nie so machen. Gibt es einen Grund, warum du 'sorted (list_0)' nicht verwendest? Auch "Compiler-Fehler" ?? – hop

+0

@hiroprotagonist danke für Ihren Vorschlag. sorted() ist großartig, aber ich versuche den internen Prozess von mir selbst zu machen. – CodeManga

Antwort

0

eine pythonic Version Auswahl Art bekommen. Dies ist nur die Python-Übersetzung der selection sort code from wikipedia. der Code ist gut kommentiert dort ...

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] 
0

Ich glaube, Sie sollte so etwas tun:

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

Ausgabe kam sehr genau, aber ich versuche, ohne vordefinierte Funktionen Hilfe zu tun. – CodeManga

+0

Welche Art von Sortierung führt diese Funktion "sorted()" intern durch? – CodeManga

0

Okay, ich habe mein Telefon verwendet und kam mit diesem Code. Ich bin irgendwie beschäftigt, aber ich hoffe, das hilft dir. Ich komme auch mit einem python list tutorial very soon.

Ich werde Ihr Problem einbeziehen und eine bessere Lösung geben.

Im Moment bin ich beschäftigt.

Hier ist der Code.

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) 

Hier ist ein Bild:

The screenshot of the solution.

+1

list_O = [1,10,8,9,4,6,5,2,7] list_final = [] index = 0 # min_item = min (list_O) während Index

1

Der letzte Code nach allen hilft guys.Thank Sie!

@hop @andrepogg @Godson Rapture Chijioke @hiro Protagonist

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]

0

Okay ... Bin immer noch auf dein Problem ...

Versuchen Sie diesen Code aus.

Sie das gewünschte Ergebnis

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)