Pytanie w sprawie python – Funkcja Pythona zwraca None, niejasne dlaczego

2

Jestem całkiem nowy w pythonie i trafiam na problem, którego nie potrafię wyjaśnić. Próbowałem przeszukać odpowiedzi na forum tutaj, ale to, co znalazłem, nie pasuje do mojej sytuacji. Wydaje mi się, że brakuje mi czegoś bardzo podstawowego, ale tego nie widzę (oczywiście ...)

Ten kod działa tak, jak oczekuję:

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

To zwraca:

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

Tego właśnie chcę.

Myślałem, że użycie funkcji dodawania i rozszerzania na liście wewnątrz funkcji również zadziała. Jeden „dodatek” został dodany w dolnej części kodu.

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

Ale to wraca:

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

Dlaczego pojawia się „Brak”? Z góry dziękuję za wszelką pomoc lub spostrzeżenia.

Spójrz na tę dokumentację:docs.python.org/tutorial/datastructures.html... Jeśli nie powie, że zwraca coś, możesz założyć, że zwraca wartość None. tabchas
Dzięki! To pomaga. user1376401

Twoja odpowiedź

1   odpowiedź
6

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

list.append() zawsze wracaNone.

Więclst.append([1,1]) dołączą[1,1] dolst i wróćNone.

Zgadzam się, to jest częsty błąd, kiedyś tak myślałemlist.append zwróci także dołączony element. jamylak
Ok dziękuję. To wyjaśnia to wyraźnie. user1376401

Powiązane pytania