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