這個程序爲什麼會輸出[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)
這個程序爲什麼會輸出[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)
您附加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
不會受到影響。
我很少看到這麼好解釋的答案:-) – Grimmy
因爲,aList.pop()
實際上返回bList
,並且您將aList
的內容附加到它。
你的代碼以一種稍微複雜的方式執行'bList.append(aList)'。 – Matthias