-4
inp[0][0] = shadow[3][0]
inp[0][3] = shadow[0][0]
inp[3][3] = shadow[0][3]
inp[3][0] = shadow[3][3]
このコードをforループにしたいのは、このコードが嫌だからです!私はしかし、どのように把握することはできません。このリストをforループにする方法
inp[0][0] = shadow[3][0]
inp[0][3] = shadow[0][0]
inp[3][3] = shadow[0][3]
inp[3][0] = shadow[3][3]
このコードをforループにしたいのは、このコードが嫌だからです!私はしかし、どのように把握することはできません。このリストをforループにする方法
基本的には、(0, 0), (0, 3), (3, 3), (3, 0)
シリーズから、2つの座標セットをリング形式でピッキングしています。あなたは第二の点に使用するインデックスとそのシリーズの上に反復して行うことができます。
points = [(0, 0), (0, 3), (3, 3), (3, 0)]
for index, (x, y) in enumerate(points, -1):
shadow_x, shadow_y = points[index]
inp[x][y] = shadow[shadow_x][shadow_y]
-1
のenumerate()
function出発点を与えることによって、我々が作成points
で右のマッチング点を見つけることを相殺しました。
はまた、使用することができzip()
function:あなたが最良のあなたのユースケースに合う感じ方
points = [(0, 0), (0, 3), (3, 3), (3, 0)]
for (x, y), (shadow_x, shadow_y) in zip(points, [points[-1]] + points):
inp[x][y] = shadow[shadow_x][shadow_y]
ピック。 (実行される内容を示すためにprint()
文を使用して、実際の割り当てを置き換える)
デモ:
>>> points = [(0, 0), (0, 3), (3, 3), (3, 0)]
>>> for index, (x, y) in enumerate(points, -1):
... shadow_x, shadow_y = points[index]
... print(f"inp[{x}][{y}] = shadow[{shadow_x}][{shadow_y}]")
...
inp[0][0] = shadow[3][0]
inp[0][3] = shadow[0][0]
inp[3][3] = shadow[0][3]
inp[3][0] = shadow[3][3]
>>> for (x, y), (shadow_x, shadow_y) in zip(points, [points[-1]] + points):
... print(f"inp[{x}][{y}] = shadow[{shadow_x}][{shadow_y}]")
...
inp[0][0] = shadow[3][0]
inp[0][3] = shadow[0][0]
inp[3][3] = shadow[0][3]
inp[3][0] = shadow[3][3]
我々はマップする必要があるかについての詳細を必要としています。なぜ[0] [3]は[0] [0]から割り当てられますか? – languitar
あなたの質問にいくつかの詳細を追加してください。 inp [0] = shadow [0] [0]ではないinp [0] = shadow [3] [0]を選択する理由を説明してください。 – Ashish