New submission from JUN-WEI SONG <sungboss2...@gmail.com>:

When I used the nested list, I need to initialize the nested list, so I used 
this expression:

>>> nested_list = [[]] * 5

see also: 
https://stackoverflow.com/questions/12791501/python-initializing-a-list-of-lists

So I later learned that such an expression would make the list inside the list 
have the same reference, which would cause the problem that you modified one 
element would lead to all elements changed in the nested list.

For example:

>>> nested_list[0].append(1)
>>> nested_list
[[1], [1], [1], [1], [1]]

Therefore, maybe we could tell users how to initialize the list on the 
documentation like below:

If you need to initialize the nested list, you could follow the below example, 
also, be aware of the expression like ``[[]] * 5``, this will cause the five 
lists in the nested list to have the same reference.

   >>> nested_list = [[] for _ in range(5)]

----------
assignee: docs@python
components: Documentation
messages: 354844
nosy: docs@python, krnick
priority: normal
severity: normal
status: open
title: Improve the documentation of the nested list initialization
type: enhancement
versions: Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue38507>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to