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 2012年05月04日 04:13 by darrell, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| Screen Shot 2012年05月03日 at 9.05.59 PM.png | darrell, 2012年05月04日 04:13 | |||
| Messages (4) | |||
|---|---|---|---|
| msg159899 - (view) | Author: Darrell Long (darrell) | Date: 2012年05月04日 04:13 | |
N = 5 board_1 = [[0 for _ in range(N)] for __ in range(N)] is not the same as: board_2= [[0]*N]*N One makes a proper list of lists (the first), the second makes a new kind of animal were board_2[1][1] = 99 changes a whole column. Oddly, testing board_1 == board_2 is True! I'm teaching Python to non-majors, and this is a tough one to explain. |
|||
| msg159902 - (view) | Author: Yuval Greenfield (ubershmekel) * | Date: 2012年05月04日 06:06 | |
This isn't a bug and should be closed. It's more of a stack overflow question. If you'd like to change this fundamental behavior of a very common operation in python you should make a proposal to the python ideas mailing list at http://mail.python.org/mailman/listinfo/python-ideas In your example board_2 is equivalent to: row = [0] * N board_2 = row * N All the rows are the same initial row. As opposed to board_1 where each row is a new row. Try this: [id(i) for i in board_2] The initial equivalence is because they do represent the same values (NxN list of all zeroes). What should python compare if not by values? |
|||
| msg159903 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2012年05月04日 06:18 | |
It's actually fairly easy to explain. Just think about it harder (and consider Yuval's explanation). |
|||
| msg159906 - (view) | Author: Ezio Melotti (ezio.melotti) * (Python committer) | Date: 2012年05月04日 06:45 | |
http://docs.python.org/faq/programming.html#how-do-i-create-a-multidimensional-list http://python.net/crew/mwh/hacks/objectthink.html |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:29 | admin | set | github: 58924 |
| 2012年05月04日 06:45:00 | ezio.melotti | set | nosy:
+ ezio.melotti messages: + msg159906 stage: resolved |
| 2012年05月04日 06:18:54 | loewis | set | status: open -> closed nosy: + loewis messages: + msg159903 resolution: not a bug |
| 2012年05月04日 06:06:19 | ubershmekel | set | nosy:
+ ubershmekel messages: + msg159902 |
| 2012年05月04日 04:15:56 | darrell | set | type: behavior |
| 2012年05月04日 04:13:41 | darrell | create | |