61007


`docs=[[A],[B],[C]]` という入れ子構造のリストに[D]というリストを追加し、  
`docs2=[[A],[B],[C],[D]]` という入れ子構造のリストを作りたいです。

[code]

    docs2= docs + [d] 
    
[/code]

とすると  
`[[A],[B],[C],D]` となってしまいます。

どなたか該当のコードが分かる方がいらっしゃいましたらご教授下さい。


CC BY-SA 4.0
2019-12-02T04:41:53.753
61004
2019-12-02T10:42:07.227
2019-12-02T04:51:47.560
3060
36375
question
python
入れ子構造のリストにリストを追加したい


ちなみに単純に質問通りに`docs=[[A],[B],[C]]`としたらエラーになったので、各要素は文字列に変えました。  
以下は単純に入力した時のエラー

[code]

    >>> docs=[[A],[B],[C]]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'A' is not defined
    >>>
    
[/code]

以下のようにコピーして`append`すれば出来るでしょう。  
[Pythonで配列や行列の結合](https://qiita.com/Umaremin/items/22de1ca413176e4a19a6)

[code]

    import copy
    
    docs = [['A'],['B'],['C']]
    
    docs2 = copy.deepcopy(docs)
    docs2.append(['D'])
    
[/code]

`copy.deepcopy()`しないと、`docs2`に`docs`を代入して`append`すると`docs`の方も同じく変化します。  
[リストの複製、浅いコピーと深いコピー](https://webbibouroku.com/Blog/Article/post-1558)


CC BY-SA 4.0
2019-12-02T05:36:15.280
61007
2019-12-02T05:36:15.280
26370
61004
answer

[code]

    docs2 = docs + [[d]]
    
[/code]

他の回答にあるように、入れ子構造の場合浅いコピーでいいのか、深いコピーが必要なのかという問題がありますが、`deepcopy`
が必要なければこれで十分でしょう。


CC BY-SA 4.0
2019-12-02T10:42:07.227
61023
2019-12-02T10:42:07.227
2521
61004
answer