2011-11-11 3 views
2

私はリストのリストをPythonで複製できる必要があります。Pythonでリストのリストを複製しますか?

だから、今私はリストを返す関数を持っています。

これは常にリスト内のリストです。例えば

myList = [[1,2,3],[4,5,6],[7,8,9]] 

は今、私はmyList1を編集した場合(例えば、myList2はできません別途変更可能で、それぞれがこのリストの2つのコピー(myList1、およびmyList2)を作成する必要があります編集しました)

私はすべてを試しました。単純なものから

:より複雑に

myList1 = myList[:] 
myList2 = myList[:] 

myList1 = [] 
for ch in myList: 
     myList1.append(ch) 


myList2 = [] 
for ch in myList: 
     myList2.append(ch) 

何も動作。私は1つのリストに値を変更した場合:

myList1[0][0] = 10 

両方のリストは次のようになります。

[[10,2,3],[4,5,6],[7,8,9]] 

任意のアイデアはどのようにこれを行うには?

答えて

8

これまでに試したことはすべて、外側のリストの浅いコピーを作成するだけです。ディープコピーを作成するには、copy.deepcopy()機能を使用して、リストの内包表記や

copied_list = copy.deepcopy(my_list) 

を使用して

copied_list = [x[:] for x in my_list] 

のいずれかを使用します。

+0

感謝を。 – tknickman

3

copy.deepcopyを使用してください。

myList2 = copy.deepcopy(myList1) 

それがオンラインで作業を参照してください:それは完全に働いたideone

関連する問題