嵌套列表(以下简称嵌套列表,如:a = [[1, 2, 3], [2, 4]])快速复制后(以下简称复制列表,如:[[1, 2, 3], [2, 4], [1, 2, 3], [2, 4], [1, 2, 3], [2, 4]]),相同元素(如:[1, 2, 3])为什么指向同一对象?而自定义一个与复制列表相同的列表(如:[[1, 2, 3], [2, 4], [1, 2, 3], [2, 4], [1, 2, 3], [2, 4]]),相同元素(如:[1, 2, 3])却指向不同的对象?这是为什么(具体情况详见下面的代码)?# 定义一个嵌套列表a,并输出a = [[1, 2, 3], [2, 4]]print(f"嵌套列表:{a}")# 对嵌套列表进行复制,得到复制列表b,并输出b = a * 3print(f"复制列表:{b}")# 查看嵌套列表a与复制列表b中相同元素的地址:相同元素均指向同一对象print(f"元素[1, 2, 3]的地址:{id(a[0])}、{id(b[0])}、{id(b[2])}、{id(b[4])}")print(f"元素[2, 4]的地址:{id(a[1])}、{id(b[1])}、{id(b[3])}、{id(b[5])}")# 修改嵌套列表中a[0][0]的值,则列表a、b中其他对应元素的值也进行了修改a[0][0] = 100print(a)print(b)print("#" * 70)# 定义一个与上面复制列表b一样的列表c,并输出c = [[1, 2, 3], [2, 4], [1, 2, 3], [2, 4], [1, 2, 3], [2, 4]]print(c)# 查看列表c中相同元素的地址:地址各不相同print(f"元素[1, 2, 3]的地址:{id(c[0])}、{id(c[2])}、{id(c[4])}")