给出了意外的结果集?

时间:2013-11-22 09:02:37

标签: python append

为什么此程序的输出为[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)

2 个答案:

答案 0 :(得分:2)

追加 bListaList,然后再次将其弹出并将aList附加到bList

以下是一步一步发生的事情:

  1. 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()将参数添加为目标列表中的单个条目。

  2. 然后测试5是否在aList;它不是,它位于嵌套列表中:

    >>> 5 in aList
    False
    >>> 5 in aList[-1]
    True
    
  3. 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']]
    
  4. 您可能希望扩展 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 aListTruebList不会受到影响。

答案 1 :(得分:0)

因为,aList.pop()实际上会返回bList,并且您要将aList的内容附加到其中。