I have a list of list and like to expand each "list element" by appending a 1 and a 0 to it. For example, from "lr = [[1], [0]]" expand to "lr = [[1,1], [0,1], [1,0], [0,0]]".
The following won't work: Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 19:28:18) [MSC v.1600 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> lr = [[1], [0]] >>> lx = [] >>> for i in range(len(lr)): ... lx[:] = lr[i] ... lx.append(0) ... lr[i].append(1) ... lr.append(lx) ... >>> lr [[1, 1], [0, 1], [0, 0], [0, 0]] >>> But the following does: >>> lr = [[1], [0]] >>> lx = [] >>> for i in range(len(lr)): ... lx = lr[i][:] ... lx.append(0) ... lr[i].append(1) ... lr.append(lx) ... >>> lr [[1, 1], [0, 1], [1, 0], [0, 0]] >>> After stepping through the first one manually: >>> lr = [[1], [0]] >>> lx[:] = lr[0] >>> lx.append(0) >>> lx [1, 0] >>> lr[0].append(1) >>> lr [[1, 1], [0]] >>> lr.append(lx) >>> lr [[1, 1], [0], [1, 0]] >>> So far so good... >>> lx[:] = lr[1] >>> lx.append(0) >>> lx [0, 0] >>> lr[1].append(1) >>> lr [[1, 1], [0, 1], [0, 0]] >>> Woops! What's wrong? --Jach Fong -- https://mail.python.org/mailman/listinfo/python-list