我有一個包含每個坐標資訊的“矩陣”(串列串列)。如果可能的話,我希望能夠獲得每個元素的鄰居。如果不是,則回傳無
matrix = [ [{"name":"A"},{"name":"B"}],
[{"name":"C"},{"name":"D"}]]
for ridx, slotRow in enumerate(matrix):
for cidx, slotData in enumerate(slotRow):
n ={
"up": matrix [ridx-1][cidx] if ridx-1 > 0 else None,
"down": matrix[ridx 1][cidx] if ridx 1 < len(matrix) else None,
"left": matrix[ridx][cidx-1] if cidx-1 > 0 else None,
"right": matrix[ridx][cidx 1] if cidex 1 < len(matrix[ridx]) else None
}
print(n)
有沒有辦法在沒有 IndexError 或沒有每個鄰居的 Try/Except 的情況下實作這一點?向上和向左都可以。大于長度的索引是問題
uj5u.com熱心網友回復:
您應該檢查ridx-1andcidx-1是否大于或等于0,因為零是第一個有效索引。所以:
matrix = [[{"name":"A"},{"name":"B"}],
[{"name":"C"},{"name":"D"}]]
for ridx, slotRow in enumerate(matrix):
for cidx, slotData in enumerate(slotRow):
n = {
"up": matrix [ridx-1][cidx] if ridx-1 >= 0 else None,
"down": matrix[ridx 1][cidx] if ridx 1 < len(matrix) else None,
"left": matrix[ridx][cidx-1] if cidx-1 >= 0 else None,
"right": matrix[ridx][cidx 1] if cidx 1 < len(matrix[ridx]) else None
}
print(n)
順便說一句,檢查最后一個的拼寫cidx 1。
uj5u.com熱心網友回復:
如果您將代碼重命名cidex 1為cidx 1
我認為您想要>= 0的而不是> 0
if ridx-1 > 0-->f ridx-1 >= 0
或者您將丟失第一個索引,則您的代碼有效
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/477474.html
上一篇:將物件轉換為陣列
