可変デフォルト引数を修正する
Pythonでは、関数のデフォルト引数としてリストなどの可変オブジェクトを使用すると、思わぬ挙動を引き起こすことがあります。これは、関数の引数のデフォルト値が関数定義時に一度だけ評価されるためです。その結果、可変なデフォルト引数はすべての関数呼び出しで共有されてしまいます。
この問題を解決するためには、リストの引数のデフォルト値を
None
に設定し、関数内でその引数がNone
の場合に空のリストを初期化するように関数を修正する必要があります。あなたは前の演習で定義された
mutable_default_argument
関数を修正しなければなりません。この関数は整数n
と、デフォルトでNone
となるリストlst
の2つのパラメータを受け取ります。関数は
lst
がNone
かどうかをチェックし、もしNone
であれば空のリストとして初期化します。その後、整数n
をlst
に追加し、lst
を返します。入力の最初の行には、関数が呼び出される回数を示す整数
m
が含まれます。続くm
行には、それぞれリストに追加される整数n
が1つずつ与えられます。出力は
m
行からなり、各行は関数呼び出し後のlst
の状態を表すリストです。入力 | 出力 |
3
1
2
3 | [1]
[2]
[3] |
注意: 前の演習とは異なり、リスト
lst
が関数呼び出し間で共有されていないことに注目してください。各関数呼び出しは、その呼び出しで追加された数だけを含むリストを生成します。これは、可変デフォルト引数の使用を避けることで期待通りの動作が得られることを示しています。Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB