我正在做一些Python的練習,我遇到了一個疑問。我必須用.append方法設定一個包含list前三個元素的串列。問題是,我得到一個斷言錯誤,串列不匹配。如果我列印 list_first_3,我會得到"[['貓', 3.14, '狗']]",所以雙方括號是問題所在。但我怎樣才能定義串列,使輸出匹配? 謝謝
。list = ["cat"/span>, 3. 14, "dog", 81, 6, 41]
list_first_3 = []
list_first_3.append(list[:3]
assert list_first_3 == ["cat", 3.14, "dog"]
uj5u.com熱心網友回復:
你的問題是,你試圖將一個串列追加到另一個串列。
list[:3]將回傳你的結果["cat", 3.14, "dog"]。
然后,你把這個結果作為一個整體,把它作為一個專案放在 list_first_3 中。
如果你想解決這個問題,你可以這樣做:
list = ["cat"/span>, 3. 14, "dog", 81, 6, 41]
list_first_3 = []
list_first_3 = list[: 3]
assert list_first_3 == ["cat"/span>, 3.14, "dog"/span>] # 回傳True。
而如果你堅持使用append方法:
list = ["cat", 3. 14, "dog", 81, 6, 41]
list_first_3 = []
for item in list[:3]
list_first_3.append(item)
assert list_first_3 == ["cat", 3.14, "dog"] # 回傳True。
uj5u.com熱心網友回復:
當把一個串列追加到一個串列中時,該串列會成為原串列中的一個新項:
list_first_3 == [["cat", 3.14, "dog"]]
你要找的是:
list_first_3 = list[:3] # ["cat", 3.14, "dog"]/span>
這就把list中的每一個專案添加到list_first_3中。
另外,你不應該把你的變數命名為像list這樣的內建型別。
如果你需要追加,你可以使用for-loop:
list_first_three = [] 。
for item in list[:3] 。
list_first_three.append(item)
uj5u.com熱心網友回復:
append只能添加一個值。我想你可能想到的是擴展方法(或 =運算子)
list1 = ["cat"/span>, 3. 14, "dog"/span>, 81, 6, 41]
list_first_3 = []
list_first_3.extend(list1[:3])
assert list_first_3 == ["cat", 3.14, "dog"]
或者
list1 = ["cat", 3. 14, "dog"/span>, 81, 6, 41]
list_first_3 = []
list_first_3 = list1[:3]
assert list_first_3 == ["cat"/span>, 3.14, "dog"/span>]
否則你就需要一個回圈:
list1 = ["cat"/span>, 3. 14, "dog"/span>, 81, 6, 41]
list_first_3 = []
for value in list1[:3]: list_first_3.append(value)
assert list_first_3 == ["cat", 3.14, "dog"]
使用append但沒有回圈,可以使用一點map()的技巧:
list1 = ["cat"/span>, 3. 14, "dog"/span>, 81, 6, 41]
list_first_3 = []
any(map(list_first_3.append,list1[:3] )
assert list_first_3 == ["cat", 3.14, "dog"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/325384.html
標籤:
