2017-05-31 3 views
-1

Ich versuche die Liste zu sortieren, wo -1 stagniert, wo der Rest der Zahlen in der Höhe sortiert ist. Die Ausgabe sollte [-1, 150, 160, 170, -1, -1, 180, 190] sein.Keep Indexes Stagnant Python

a = [-1, 150, 190, 170, -1, -1, 160, 180] 
z = [n for n, m in enumerate(a) if m == -1] 
y = sorted(a) 
print(y) 
print (z) 

Hier sind die Ergebnisse

y=[-1, -1, -1, 150, 160, 170, 180, 190] 
z=[0, 4, 5] 
output should be= [-1, 150, 160, 170, -1, -1, 180, 190] 
+0

das gewünschte Ergebnis – RomanPerekhrest

+0

zeigen, dass die Ausgabe am Boden sein sollte, ist. –

Antwort

3

können Sie die Elemente sortieren, die nicht -1 sind und füllen Sie ihn wieder auf die ursprüngliche Liste:

a = [-1, 150, 190, 170, -1, -1, 160, 180] 
s = sorted(x for x in a if x != -1) 
s 
# [150, 160, 170, 180, 190] 

for i, v in enumerate(a): 
    if v != -1: 
     a[i] = s.pop(0) 

a 
# [-1, 150, 160, 170, -1, -1, 180, 190] 
0

Ich glaube nicht, gibt es eine Möglichkeit sortierten zu verwenden, um dies zu tun. Ich denke, dass Sie das tun könnten:

Es ist nicht unglaublich Pythonic, aber es funktioniert.

+0

Dieser Fehler ist aufgetreten: TypeError: append() nimmt genau ein Argument (2 gegeben) –

+0

Ah sorry, reparierte es. Psidoms Antwort ist wahrscheinlich sowieso besser. – Clockwork