我试图在Python的另一个列表中创建一个列表。我注意到,根据声明,最终(外部)列表的行为有所不同。你知道吗
我试着用两种不同的方式创建列表列表。两个案例都给了我不同的结果。你知道吗
#Case 1
def test():
lt1 = lt2 = list()
for i in range(0, 10):
for j in range(0, 2):
lt1.append(j);
lt2.append(lt1);
lt1 = [];
print (lt2)
if __name__ == "__main__":
test()
#Case 2
def test():
lt1 = list()
lt2 = list()
for i in range(0, 10):
for j in range(0, 2):
lt1.append(j);
lt2.append(lt1);
lt1 = [];
print (lt2)
if __name__ == "__main__":
test()
在案例1中,输出为 [0,1,[…],[0,1],[0,1],[0,1],[0,1],[0,1],[0,1],[0,1],[0,1],[0,1]]
在案例2中,输出是 [[0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1]] 这是我实现的预期答案。你知道吗
我想知道为什么第一个代码片段的行为不同。你知道吗
因为第一行:
与案例1中的一行一样,它包含相同的对象,因此:
这两条线是不会发生的:
所以很简单,因为案例1的第一行有
a
和b
,它们是完全相同的对象,不同于第二个案例的第一行,它们是相同的值,但是不同的id
(id(a) == id(b)
与a is b
相同)。你知道吗相关问题 更多 >
编程相关推荐