Frage an python – Python-Funktion gibt None zurück, unklar warum

2

Ich bin ziemlich neu in Python und stoße auf ein Problem, das ich nicht erklären kann. Ich habe versucht, die Forumantworten hier zu durchsuchen, aber was ich finde, stimmt nicht mit meiner Situation überein. Es fühlt sich an, als würde mir etwas ziemlich Grundlegendes fehlen, aber ich sehe es nicht (offensichtlich ...)

Dieser Code läuft so, wie ich es erwartet habe:

<code>import string

mults = [1,2,3,4,6,7,9,10,12,15,16,19,21,22,24]

def factor_exp(lst):
    if lst[-1] == 1:
        lst.pop()
        return lst+[1]
    if lst[-1] == 2:
        lst.pop()
        return lst+[1,1]
    else:
        return "Should never get here"

print factor_exp([1])
print factor_exp([2])
print factor_exp([1,2])
</code>

Dies ergibt:

<code>>>> 
[1]
[1, 1]
[1, 1, 1]
</code>

Welches ist, was ich will.

Ich dachte, das Anhängen und Erweitern der Liste innerhalb der Funktion würde auch funktionieren. Ein "Anhang" am unteren Rand des Codes hinzugefügt.

<code>import string

mults = [1,2,3,4,6,7,9,10,12,15,16,19,21,22,24]

def factor_exp(lst):
    if lst[-1] == 1:
        lst.pop()
        return lst+[1]
    if lst[-1] == 2:
        lst.pop()
        return lst.append([1,1])
    else:
        return "Should never get here"


print factor_exp([1])
print factor_exp([2])
print factor_exp([1,2])
</code>

Aber das ergibt:

<code>>>> 
[1]
None
None
</code>

Warum erscheinen die "Keine"? Vielen Dank im Voraus für jede Hilfe oder Erkenntnisse.

Vielen Dank! Das hilft. user1376401
Schauen Sie sich diese Dokumentation an:docs.python.org/tutorial/datastructures.html... Wenn es nicht ausdrücklich sagt, dass es etwas zurückgibt, können Sie davon ausgehen, dass es None zurückgibt. tabchas

Deine Antwort

1   die antwort
6

aber ich würde sagen, dass er für diese Zeile gilt:

<code>return lst.append([1,1])
</code>

list.append() kehrt immer zurückNone.

Solst.append([1,1]) wird anhängen[1,1] zulst und zurückNone.

OK danke. Dies erklärt es klar. user1376401
Ich stimme zu, das ist ein häufiger Fehler, das habe ich früher gedachtlist.append würde das angehängte Element auch zurückgeben. jamylak

Verwandte Fragen