问一下python list基础知识

求问一下python list基础
a = [[]]*5
b = [[] for x in range(5)]
这两个都是创建一个具有5个空list的list
但是赋值的时候为什么a[0].append(1)的结果为[[1], [1], [1], [1], [1]]
而b[0].append('1')的结果为[[1], [], [], [], []]
求一份讲解谢谢🙏

这个设计到指针的思想。
a的直接乘以5,相当于原空列表原封不动的复制,指针指向同一地址。第二个是循环加入一个新的空列表,值相等都是空,但是地址却不一样,因为后面的是依次新加的。

看一下地址id就明白了

img

看图,最清楚了。

img