Here is another one:
>>> given=[1,2,3,4] >>> rtr=[[]] >>> for t in map(None,*(given,[None])): ... rtr=[x+[y] for x in rtr for y in t] ... >>> rtr [[1, 2, 3, 4], [1, 2, 3, None], [1, 2, None, 4], [1, 2, None, None], [1, None, 3, 4], [1, None, 3, None], [1, None, None, 4], [1, None, None, None], [None, 2, 3, 4], [None, 2, 3, None], [None, 2, None, 4], [None, 2, None, None], [None, None, 3, 4], [None, None, 3, None], [None, None, None, 4], [None, None, None, None]]