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

```

    docs2= docs + [d] 
    
```

とすると  
`[[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]]`としたらエラーになったので、各要素は文字列に変えました。  
以下は単純に入力した時のエラー

```

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

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

```

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

`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
```

    docs2 = docs + [[d]]
    
```

他の回答にあるように、入れ子構造の場合浅いコピーでいいのか、深いコピーが必要なのかという問題がありますが、`deepcopy`
が必要なければこれで十分でしょう。
CC BY-SA 4.0
2019-12-02T10:42:07.227
61023
2019-12-02T10:42:07.227
2521
61004
answer