所以我有
A = [1,2,3,4]
我想檢查陣列是否對稱。所以輸出將是False
另一個例子是
arr = [1,2,3,3,2,1]
out = fun(arr)
out = True
我一直在嘗試
def checksymm(a):
flag = 0
for i in range(0,len(a)/2):
if np.abs(a[i]) == np.abs(a[-i]):
return True
else:
return False
我做錯了什么?謝謝。
uj5u.com熱心網友回復:
對應的a[i]應該是a[-1-i],不是a[-i]。
此外,為什么不直接反轉串列并比較每個元素:
def isSymmetric(arr):
return (arr == arr[::-1]).all()
uj5u.com熱心網友回復:
可能最有效的方法是將比較限制在陣列的每一半:
n = len(arr) // 2
result = np.all(arr[:n] == arr[-1:-n - 1:-1])
使用絕對值:
result = (np.abs(arr[:n]) == np.abs(arr[-1:-n - 1:-1])).all()
兩種公式都應該直接與串列或陣列一起使用。
uj5u.com熱心網友回復:
比較時,注意索引,0 與 -1,1 與 -2 等(不是 1 與 -1),所以應該是iand -i-1 。另外,不要True在找到一個相等后回傳,而應在所有相等后回傳...
arr = [1,2,3,3,2,1]
def checksymm(a):
for i in range(0,len(a)//2):
if a[i] != a[-i-1]: # or np.abs(a[i]) != np.abs(a[-i-1]) as in the original code
return False
return True
out = checksymm(arr)
print(out)
>>> True
和 :
arr = [1,2,3,3,5,1]
out = checksymm(arr)
print(out)
>>> False
編輯:我試圖找到你的代碼的問題并修復它,但我會推薦@songziming 的答案,它會更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434651.html
下一篇:修改DFS演算法以檢查圖中的頂點
