以下の宣言は間違っていますか?構文エラーは発生しませんが、リストの場合b
、a
値の追加操作が機能しないことがあります。
a=b=c=[]
or
a=b=c={}
a=b=c=1 //works
以下の宣言は間違っていますか?構文エラーは発生しませんが、リストの場合b
、a
値の追加操作が機能しないことがあります。
a=b=c=[]
or
a=b=c={}
a=b=c=1 //works
a=b=c=[]
動作しますが、あなたが望むことはしません。1 つのリスト オブジェクトを作成し、それに 3 つの異なる名前を関連付けます。
a.append(1)
print b # [1]
あなたが望むのはおそらく次のとおりです:
a, b, c = [], [], []
a、b、c は 3 つの独立したリストです。
試してみましたか?
それはあなたが「間違っている」という意味に依存します。これは構文エラーではありませんが、 が同じリストを参照していることをa
意味します。したがって、後で何かを追加すると、 と にも表示されます。b
c
a
b
c
Python のリストと辞書は可変です。以下のリンクで議論を読んでください。何を実験したいかについての非常に良いアイデアが得られます。
http://docs.python.org/release/2.5.2/lib/typesseq-mutable.html
a=b=c=[]
他のいくつかの回答は、3つの名前すべてが同じリストオブジェクトを参照するように正しく言っています。ただし、別のポイントがあります。Python では、何も宣言しません。それらに追加したい場合にのみ、名前を空のリストにする必要がありa
ます。それ以外の場合は、好きなように設定できます。b
c