我正在研究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