I want to initialize a multidimensional list. Basically, I want a 10x10 grid - a list of 10 lists each containing 10 items.
Each list value should be initialized to the integer 0.
The obvious way to do this in a one-liner: myList = [[0]*10]*10 won't work because it produces a list of 10 references to one list, so changing an item in any row changes it in all rows.
The documentation I've seen talks about using [:] to copy a list, but that still won't work when using the multiplier: myList = [0]*10; myList = myList[:]*10 has the same effect as myList = [[0]*10]*10.
Short of creating a loop of myList.append()s, is there a quick efficient way to initialize a list in this way?
解决方案
You can do it quite efficiently with a list comprehension:
a = [[0] * number_cols for i in range(number_rows)]