我正在研究Euler Project,問題11,它涉及在網格中查找四個相鄰數字的所有可能組合的最大產品。對於其他基本方向Python使用列表理解通過嵌套列表進行迭代
if x+4 <= len(matrix[x]): #check right
my_slice = [int(matrix[x][n]) for n in range(y,y+4)]
...等等:我已經分裂成數嵌套列表,並使用了列表解析切片的相關數字,像這樣。到現在爲止還挺好。但是當我到對角線時,事情就會變得有問題。我試圖用兩個範圍是這樣的:
if x+4 <= len(matrix[x]) and y-4 >=0:# check up, right
my_slice = [int(matrix[m][n]) for m,n in ((range(x,x+4)),range(y,y+4))]
但是,這會產生以下錯誤:
<ipython-input-53-e7c3ebf29401> in <listcomp>(.0)
48 if x+4 <= len(matrix[x]) and y-4 >=0:# check up, right
---> 49 my_slice = [int(matrix[m][n]) for m,n in ((range(x,x+4)),range(y,y+4))]
ValueError: too many values to unpack (expected 2)
我對X期望指標的[0,0]
y值將是['0,0','1,1','2,2','3,3']
。使用枚舉函數遍歷列表似乎並沒有什麼不同,但顯然我錯過了一些東西。
P.S.我爲可怕的變量術語表道歉,我正在進行一項工作。
嘗試壓縮範圍? – JETM
你正在處理*數組*還是*列表*?它們不是同一件事。 –
謝謝您的澄清,實際上它是一個嵌套列表。編輯來反映。 – SgtStens