for loop without variable
Mike Meyer
mwm-keyword-python.b4bdba at mired.org
Fri Jan 11 17:37:30 EST 2008
On Fri, 11 Jan 2008 22:18:22 GMT Neil Hodgson <nyamatongwe+thunder at gmail.com> wrote:
> Marty:
> > I recently faced a similar issue doing something like this:
> > data_out = []
> > for i in range(len(data_in)):
> > data_out.append([])
>
> Another way to write this is
> data_out = [[]] * len(data_in)
Not quite. All the other variants give you 23 empty lists. That one
gives you 23 references to one list:
>>> x = [[] for _ in range(23)]
>>> x[1].append(23)
>>> x
[[], [23], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]
>>> x = [[]] * 23
>>> x[1].append(23)
>>> x
[[23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23], [23]]
<mike
--
Mike Meyer <mwm at mired.org> http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.
More information about the Python-list
mailing list