As mentioned in @jonrsharpe, random.shuffleacts on the list in place. When you add x, you add a link to this particular object. Thus, at the end of the loop kcontains ten pointers to the same object!
, . list() .
import random
x = [1,0,0,1,1]
k = []
for i in range(10):
random.shuffle(x)
k.append(list(x))