[英]Python ValueError: list.remove(x): x not in list
def switch(g, p,n):
final = []
for i in range(len(p)):
d = list(range(n))
d.remove(g[i])
d.remove(p[i])
final.append(d)
return final
switch([2, 3, 0], [[1, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 5, 6, 7, 8,
9],[1, 2, 4, 5, 6, 7, 8, 9]],11)
但是,當我運行此代碼時,出現以下錯誤:
ValueError Traceback (most recent call last) <ipython-input-151-72e1cc5c9abf> in <module>()
10 return final
11
---> 12 switch([2, 3, 0], [[1, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 5, 6, 7, 8, 9],[1, 2, 4, 5, 6, 7, 8, 9]],11)
<ipython-input-151-72e1cc5c9abf> in switch(g, p, n)
4 d = list(range(n))
5 d.remove(g[i])
----> 6 d.remove(p[i])
7
8 final.append(d)
ValueError: list.remove(x): x not in list
我在這里做錯了什么? 我只想從列表中刪除g和p的數字,然后得到剩下的數字作為輸出。
看起來您正在嘗試從列表中刪除數組
In [259]: alist = [np.arange(3), np.ones(3,int),np.array([4,3,2])]
In [260]: alist
Out[260]: [array([0, 1, 2]), array([1, 1, 1]), array([4, 3, 2])]
In [261]: alist.remove(alist[1])
....
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
問題是對數組的相等性測試返回布爾數組
In [262]: alist[1]==alist[0]
Out[262]: array([False, True, False])
In [263]: alist[1]==alist[1]
Out[263]: array([ True, True, True])
但是列表remove
需要一個簡單的True或False,而不是一個不明確的數組。
這種刪除可用於列表列表或元組列表
In [264]: alist = [[0,1,2],[1,1,1],[4,3,2]]
In [265]: alist.remove(alist[1])
In [266]: alist
Out[266]: [[0, 1, 2], [4, 3, 2]]
您是否真的需要一個數組列表?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.