2

私はPythonにかなり慣れておらず、説明できない問題に直面しています。ここでフォーラムの回答を検索してみましたが、見つけたものが私の状況と一致していません。かなり基本的なものが欠けているように感じますが、見ていません(明らかに...)

このコードは私が期待するように実行されます:

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

これは次を返します:

>>> 
[1]
[1, 1]
[1, 1, 1]

それが私が欲しいものです。

関数内のリストでappendとextendを使用しても機能すると思いました。コードの下部近くに1つの「追加」が追加されました。

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

しかし、これは戻ります:

>>> 
[1]
None
None

なぜ「なし」が表示されるのですか?ヘルプや洞察を事前に感謝します。

4

1 に答える 1

6

私はあなたのコードを研究しませんでした、しかし私はそれがこの行のためであると言うでしょう:

return lst.append([1,1])

list.append()常に。を返しますNone

したがって、lst.append([1,1])に追加[1,1]lstて戻りNoneます。

于 2012-05-05T07:01:49.403 に答える