這裏是我的Python代碼:python,list比較,ValueError:具有多個元素的數組的真值是不明確的。使用a.any()或a.all()
def ava_check(nodes_group,child_list):
ava_list=nodes_group[:]
if nodes_group[1] in child_list:
return None
else:
for a in nodes_group:
if a in child_list:
ava_list.remove(a)
ava_list.remove(nodes_group[nodes_group.index(a)-1])
else:
pass
的nodes_group
就像[0.0, (0, 3), 0.0, (0, 2), 0.0, (1, 3)]
列表。 child_list
是一個像[(0, 1)]
列表。
但是當我運行代碼時,有一個錯誤:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
發生在行if a in child_list:
。我不知道這裏有什麼問題。我試圖搜索,但他們說了一些關於numpy的內容。但是我沒有在這裏使用numpy,這兩個inout參數都是用元組列表的。
你能幫我解決這個問題嗎?
非常感謝。
更新:感謝大家的解決方案。列表nodes_group中的一些數據(不是元組)來自numpy
陣列。但我將數據存儲在新列表中。所以我使用type()檢查了新列表中元素的數據類型,並且我發現該類型爲numpy.float64
,這解釋了爲什麼出現此錯誤。所以我寫了一個循環來改變列表中元素的類型從numpy.float64
到int,只需使用int()
。所以問題解決了。但是,任何人都知道是更好的解決方案還是更pythonic的方式?謝謝。
上面的代碼可以在沒有bug的情況下在repl.it上運行。這是我不明白的另一件事。 –
代碼中沒有'如果在nodes_group'中。請用正確的線更新。 –
@AkshatMahajan謝謝。我已經改變了錯字。 –