>>> rows = [['']*5]*5>>> rows[['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', '']]>>> rows[0][0] = 'x'
Naturally, I expect rows to become:
[['x', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', '']]
Instead, I get:
[['x', '', '', '', ''], ['x', '', '', '', ''], ['x', '', '', '', ''], ['x', '', '', '', ''], ['x', '', '', '', '']]
It seems that elements of rows list are pointers to the same old ['']*5 list. Why does it work this way and is this a Python feature?