私は、グリッド内の4つの隣接する数字のすべての可能な組み合わせの中で最大の製品を見つけることを含む、オイラープロジェクトの問題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))]
をしかし、これは次のエラー生成:xの
<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)
私の希望の指標を、[0,0]
のyの値は['0,0','1,1','2,2','3,3']
だろう。これは、列挙関数を使ってリストを反復するのには違いはありませんが、明らかに何か不足しています。
P.S.私のひどい変数命名法に対する私の謝罪、私は進行中の仕事です。
範囲を圧縮してみますか? – JETM
* arrays *や* lists *を使って作業していますか?彼らは同じことではありません。 –
説明していただきありがとうございます。実際はネストされたリストです。反映するように編集。 – SgtStens