This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2011年07月20日 16:38 by xintx-ua, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Messages (4) | |||
|---|---|---|---|
| msg140753 - (view) | Author: Сергій Загорія (xintx-ua) | Date: 2011年07月20日 16:38 | |
Next code: def ill(row): row[1]=1 list_manual=[[0,0,0],[0,0,0],[0,0,0]] list_generated=[[0,0,0]]*3 ill(list_manual[1]) print(list_manual) ill(list_generated[1]) print(list_generated) Will output: [[0, 0, 0], [0, 1, 0], [0, 0, 0]] [[0, 1, 0], [0, 1, 0], [0, 1, 0]] Is it a bug? |
|||
| msg140754 - (view) | Author: Sandro Tosi (sandro.tosi) * (Python committer) | Date: 2011年07月20日 17:07 | |
Hi, no it's not a bug :) What you actually get with [[0]]*3 is a list of 3 references to the same list, [0]: >>> a = [[0], [0], [0]] >>> b = [[0]]*3 >>> for i in a: print(id(i)) ... 139807725184032 139807725300280 139807725300520 >>> for i in b: print(id(i)) ... 139807725324016 139807725324016 139807725324016 |
|||
| msg140756 - (view) | Author: Сергій Загорія (xintx-ua) | Date: 2011年07月20日 17:50 | |
So the workaround is for i in range(len(list_generated)): list_generated[i]=list(tuple(list_generated[i])) |
|||
| msg140760 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2011年07月20日 18:15 | |
I'm not sure what your example is trying to achieve, but the list(tuple(...)) looks redundant. Your initial example could be written: b = [[0] for i in range(3)] |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:19 | admin | set | github: 56806 |
| 2011年07月20日 18:15:22 | r.david.murray | set | nosy:
+ r.david.murray messages: + msg140760 |
| 2011年07月20日 17:50:57 | xintx-ua | set | messages: + msg140756 |
| 2011年07月20日 17:07:10 | sandro.tosi | set | status: open -> closed nosy: + sandro.tosi messages: + msg140754 resolution: not a bug stage: resolved |
| 2011年07月20日 16:38:58 | xintx-ua | create | |