まず、この質問が非常に基本的であれば、ごめんなさい。Python:元のオブジェクトを追加するvsオブジェクトのコピーを追加する
Python 3.6がどのようにオブジェクトを作成してリストに追加するかを理解できない問題があります。 I = 0、
a_dict=dict()
a_list=list()
for i in range(100):
a_dict['original'] = i
a_dict['multi'] = i*2
a_list.append(a_dict)
リストの印刷が私の元の考えによると
print(a_list)
>>[{'original': 99, 'multi': 198}{'original': 99, 'multi': 198}...{'original': 99, 'multi': 198}]
ように書きます - > 0 =元、= 0マルチ;:次のコードを参照してください。 i = 1→original = 1、multi = 2;
しかし、この質問hereによれば、Pythonのappend()は実際の値ではなくオブジェクトにポインタを追加します。だから私は(コピー)追加する私の元のコードに追記を(元)に変更します。
a_dict=dict()
a_list=list()
for i in range(100):
a_dict['original'] = i
a_dict['multi'] = i*2
a_list.append(a_dict.copy()) ##change here
を今、私は望ましい結果を得る:
:今print(a_list)
[{'original': 0, 'multi': 0}, {'original': 1, 'multi': 2}, {'original': 2, 'multi': 4},...]
を、ここで私の質問です
append()は実際にどのように動作しますか?常にリストにはポインタのようなオブジェクトがオリジナルに含まれていますか?他のタイプはどうですか?私の意図が、元の値や使用しているリスト/コンテナを直接混乱させないようにするには、私はいつもcopy()を使うべきですか?
私は自分自身を十分に説明しています。そして、それが基本的な質問であれば、再びお詫び申し上げます。ありがとう。
forループの各繰り返しの開始時に新しい空白の辞書を作成しただけで、コードが簡単になります。しかし、リンクされた質問で既にカバーされているものは別として、あなたの質問が何であるかは明確ではありません。 –
[リストにあるpythonのリストは常に同じ値を付加しています](http://stackoverflow.com/questions/35906411/list-on-python-appending-always-the-same-value) –
@DanielRoseman、はい、私それが混乱する質問であることをご存じですか?とにかく、あなたは各ループの始めに新しい辞書について正しいです。 – AirieFenix