2016-11-10 11 views
0

Pythonが変数に値を割り当てる方法については、私が完全には理解していないことがあります。代入演算子の仕組みについては混乱しています

charlie = ['d', 'o', 'p', 'e'] 
beth = charlie 
beth[0] = charlie[1] 
print charlie 

私にこれを提供します:

['o', 'o', 'p', 'e'] 

私の知る限りは、代入演算子は一方向にしか機能します理解し、したがって、このコードは唯一、ベスの最初のインデックスではなく変更する必要があり、なぜそれが、これはということですチャーリー。だから何を与える?

+0

これは私にとってはうまく見えますが、あなたの期待は何ですか? –

+2

これは、混乱を解消するのに役立ちます:http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables – brianpck

+3

また、[このセクション](http: //www.nedbatchelder.com/text/names.html#h_assignment)のNed BatchelderのPythonの名前と値についての事実と誤解あなたは本当に全部を読むかもしれない。 –

答えて

1

beth = charlieと言うとき、bethcharlieという別名になりました。つまり、bethに起こったことは今やcharlieに起こります。

http://gestaltrevision.be/wiki/python/aliases

起こることはない。このためには、あなたはbeth = list(charlie)beth = charlie[:]を試すことができます。

+0

あなたはbeth = list(charlie)を実行できますが、これらは異なるオブジェクトになります。 – chatton

+1

または 'beth = charlie [:]' – rassar

0

2つの変数に同じリストを割り当てただけなので、charlieとは同じオブジェクトです。

関連する問題