d1 = {}
d2 = {}
l1 = [1, 2, 3]
l2 = [4, 5, 6]
选择A:将字典的第一个键初始化为空列表
d1[0] = []
d1[0].append(l1)
d1[0].append(l2)
print(d1)
{0: [[1, 2, 3], [4, 5, 6]]}
选择B:没有将字典的第一个键初始化为空列表
d2[0] = l1
d2[0].append(l2)
print (d2)
{0: [1, 2, 3, [4, 5, 6]]}
我正在学习Python。有人可以解释为什么我看到A和B之间的不同行为。我想在A中编码行为,但不明白为什么B给出不同的结果。谢谢。
答案 0 :(得分:0)
d2[0] = [l1] # this needs to be a list containing l1
d2[0].append(l2)
print (d2)
答案 1 :(得分:0)
这是因为,
情况1:
d1[0] = [] # you assign a empty list to your 0 key of dict d1
d1[0].append(l1) #you append a list to the empty list {0: [[1, 2, 3]]}
d1[0].append(l2) #you append a list to the existing list
print(d1)
{0: [[1, 2, 3], [4, 5, 6]]}
情况2:
d2[0]=l1 # you assign a list to your 0 key of dict d2
d2[0].append(l2) # now you append l2 list to list l1. That is l2 is added as the last element of l1
print (d2)
{0: [1, 2, 3, [4, 5, 6]]}
情形3:
d3={}
d3[0] = [l1] # you assign a list with element l1 in it to your 0 key of dict d2 and
d3[0].append(l2) # now you append l2 list to list that already contains l1. That is l1 is the first element and l2 is the second element
print (d3)
答案 2 :(得分:0)
在选择A 中:
您已将[]
空列表分配给d1[0]
,然后将l1
和l2
作为两个新元素添加到列表[]
。
在选择B 中:
您已将l1
本身分配给d2[0]
,并仅将l2
作为l1
的新元素附加。
你必须记住,为变量分配[]
将在内存中创建新的列表对象。