为什么此程序的输出为[5,5,5,[1,3,'Hello','Barney']]
而不是5,5,5
?
aList=[1,3,"Hello","Barney"]
bList=[5,5,5]
aList.append(bList)
if(5 in aList):
print(aList)
else:
aList.pop().append(aList)
print(bList)
答案 0 :(得分:2)
您追加 bList
至aList
,然后再次将其弹出并将aList
附加到bList
。
以下是一步一步发生的事情:
aList.append(bList)
将bList
作为单个值添加到aList
; aList
现在是:
>>> aList=[1,3,"Hello","Barney"]
>>> bList=[5,5,5]
>>> aList.append(bList)
>>> aList
[1, 3, 'Hello', 'Barney', [5, 5, 5]]
注意嵌套列表; list.append()
将参数添加为目标列表中的单个条目。
然后测试5
是否在aList
;它不是,它位于嵌套列表中:
>>> 5 in aList
False
>>> 5 in aList[-1]
True
else
分支使用list.pop()
删除最后一个元素,这是一个完整的嵌套列表,并向其附加aList
; bList
仍然引用最后一个列表:
>>> temp = aList.pop()
>>> temp
[5, 5, 5]
>>> temp is bList
True
>>> temp.append(aList)
>>> bList
[5, 5, 5, [1, 3, 'Hello', 'Barney']]
您可能希望扩展 aList
,只需将bList
的元素添加到aList
:
>>> aList=[1,3,"Hello","Barney"]
>>> bList=[5,5,5]
>>> aList.extend(bList)
>>> aList
[1, 3, 'Hello', 'Barney', 5, 5, 5]
现在5 in aList
为True
,bList
不会受到影响。
答案 1 :(得分:0)
因为,aList.pop()
实际上会返回bList
,并且您要将aList
的内容附加到其中。