Example says it all:
x = [set()]*5
x[0].add(1)
print x
yields:
[set([1]), set([1]), set([1]), set([1]), set([1])]
I understand what happened, but is this expected? Do I really need to use a loop to initialize a list with empty sets that are not aliases of each other?