2017-03-24 6 views
0

私が試した:リンクを維持せずにリストをPythonでコピーするには?

A = [1,2,3] 
B = A 
B[0] = A[0]*3 

は与えるべきである:

B == [3,2,3] 
True 
A == [1,2,3] 
True 

が、何それは本当にありませんが:

B == [3,2,3] 
A == [3,2,3] 

は、どのように私はBにリンクされて維持することなく、Bにおけるオーバーをコピーするのですか? ご協力いただきありがとうございます。

+0

' B = A変わりません、そして、

B = copy.deepcopy(A) 

以下のようにdeep_copyメソッドを使用します= A'?これにより、浅いコピーが作成されます。 –

+0

することができますB = A.copy()は浅いコピーを返します – bvmcode

+0

これも使用できますB = [x in A in] – Ashish

答えて

2

これは、コピーを作成せずにBへの参照のみを指しているためです。実際にコピーを作成するには、次の手順を実行します。

A = [1,2,3] 
B = A[:] 

これは、参照される変数がない場合に機能します。 [:] `代わりにB 'のあなたがその振る舞いをしたくない場合は、Aを変更した場合、それはB

+0

いいえ、OPはコピーをまったく作成しません。「B」と「A」は**同じ**リストを指します。浅いコピーを作ることでそれを解決することができます。 –

+0

ありがとうございます - 私はそれを変更しました。元のエラーのお詫び –

関連する問題