执行以下程序,输出结果为()
a = [['1','2'] for i in range(2)]
b = [['1','2']]*2
a[0][1] = '3'
b[0][0] = '4'
print(a,b)
a = [['1','2'] for i in range(2)]
b = [['1','2']]*2
a[0][1] = '3'
b[0][0] = '4'
print(a,b)
[['1', '3'], ['1', '3']] [['4', '2'], ['4', '2']]
[['1', '3'], ['1', '2']] [['4', '2'], ['4', '2']]
[['1', '3'], ['1', '2']] [['4', '2'], ['1', '2']]
[['1', '3'], ['1', '3']] [['4', '2'], ['1', '2']]
a = [1,2] b = a * 2 # [1, 2, 1, 2]此外还要注意一点,当a中的元素为引用类型时,如:
a = [[1,2]] b = a * 2 # b -> [[1, 2], [1, 2]] # 修改b[0][0], b[0][1]同样被修改了, 这是因为b[0]与b[1]有相同的地址 b[0][0] = 3 print(b) # [[3, 2], [3, 2]] # 打印b[0]和b[1]的 id print(id(b[0])) # 1904838110536 print(id(b[1])) # 1904838110536
a = [["1","2"] for i in range(2)] b = [["1",'2']] *2 print(id(a[0]), id(a[1])) # 子对象内存地址不同 print(id(b[0]), id(b[1])) # 子对象内存地址相同 a[0][0] = "3" b[0][0] = '4' print(a) print(b)