2017-08-21 9 views
1

wenn ich den folgenden Code ausführen, habe ich nicht die richtige Antwort erhalten. Es gibt [4] zurück, wenn es zurückkehren soll [4, 4].entfernen Sie ungerade Zahlen aus der Liste

def purify(y): 
    new_numbers = [] 
    for x in y: 
      if x%2 ==0: 
        new_numbers.append(x) 
     return new_numbers 

print(purify([4,5,5,4])) 
+0

haben Sie versucht, meine Lösung, wenn es dann half akzeptieren Sie bitte die Antwort oder vote up ? – JRG

Antwort

6

Ihr Einzug ist aus, die Rückkehr zu setzen, nachdem die for Schleife läuft

def purify(y): 
    new_numbers = [] 
    for x in y: 
      if x%2 ==0: 
        new_numbers.append(x) 
    return new_numbers 
3

einige eleganten Ausdrücke wie Liste Verständnis mit if so etwas wie diese Sie

def purify(y): 
    return [x for x in y if x%2 == 0] 
2

kombinierte Einsatz sein sollten Vorsicht bei der Einrückung, wenn mit Python gearbeitet wird. Der folgende Code ist gut, aber es gibt ein Problem mit der Einrückung auf return new_numbers.

return new_numbers ist mit if condition ausgerichtet, aufgrund dessen for loop nur einmal ausgeführt wird und die erste 4 zurückgibt. Wenn Sie return Anweisung mit for loop einrücken, wird es perfekt funktionieren.

def purify(y): 
    new_numbers = [] 
    for x in y: 
     if x%2 ==0: 
      new_numbers.append(x) 
    return new_numbers 

print(purify([4,5,5,4])) 
1

Sie können dies nur eine Zeile in tun:

def purify(y):  
    return [x for x in y if not x%2] 
+1

Sie könnten "nicht x% 2" meinen, so dass es gerade Zahlen zurückgibt. – nehemiah

+2

Danke. Ich habe es repariert! Englisch ist nicht meine Muttersprache. Ich habe das gleiche Problem mit Recht e übrig! –

1

nur Lamda verwenden:

def purify(y): 
filter(lambda i: not i%2==0, y) 
Verwandte Themen