2025.10.15(更新日: 2025.10.15)
【Python】現在の座標をzipで更新する
はじめに
二次元配列の座標空間で、現在地からある量だけ移動するというプログラムを作成した。
from pprint import pprint
two_d_list = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
pprint(two_d_list, width=20)
my_position = (2, 2) # (row, column)
print(two_d_list[my_position[0]][my_position[1]])
move_direction = (0, -1) # (row_change, column_change)
my_moved_position = tuple(x + y for x, y in zip(my_position, move_direction))
print(two_d_list[my_moved_position[0]][my_moved_position[1]])
【Python】現在の座標をzipで更新する · ki-hi-ro/python@ed863a1
二次元配列の座標空間
two_d_listという二次元配列を作成した。出力を見やすくするために、pprintモジュールのpprintメソッドを使用している。
from pprint import pprint
two_d_list = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
pprint(two_d_list, width=20)
my_position = (2, 2) # (row, column)
print(two_d_list[my_position[0]][my_position[1]])
move_direction = (0, -1) # (row_change, column_change)
my_moved_position = tuple(x + y for x, y in zip(my_position, move_direction))
print(two_d_list[my_moved_position[0]][my_moved_position[1]])
出力結果。
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
9
8
現在地
my_positionをタプルで表現した。my_position[0]でタプルの最初の要素が取り出せる。my_position[1]でタプルの次の要素が取り出せるので、それをtwo_d_listから値を取り出すのに使用した。
from pprint import pprint
two_d_list = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
pprint(two_d_list, width=20)
my_position = (2, 2) # (row, column)
print(two_d_list[my_position[0]][my_position[1]])
move_direction = (0, -1) # (row_change, column_change)
my_moved_position = tuple(x + y for x, y in zip(my_position, move_direction))
print(two_d_list[my_moved_position[0]][my_moved_position[1]])
出力結果。
9
移動する量
move_directionで、移動する量を表現している。行は0で変化なし、列は-1なので、左に行く。
from pprint import pprint
two_d_list = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
pprint(two_d_list, width=20)
my_position = (2, 2) # (row, column)
print(two_d_list[my_position[0]][my_position[1]])
move_direction = (0, -1) # (row_change, column_change)
my_moved_position = tuple(x + y for x, y in zip(my_position, move_direction))
print(two_d_list[my_moved_position[0]][my_moved_position[1]])
移動後の位置を計算する
zip(my_position, move_direction)で、[(2, 0), (2, -1)]というような元の要素のペアができる。for x, y in zip(my_position, move_direction)なので、x=2, y=0、x=2, y=-1という形で、処理が進む。x + yという処理。全体がtupleで囲まれているので、(2+0, 2-1)となる。
from pprint import pprint
two_d_list = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
pprint(two_d_list, width=20)
my_position = (2, 2) # (row, column)
print(two_d_list[my_position[0]][my_position[1]])
move_direction = (0, -1) # (row_change, column_change)
my_moved_position = tuple(x + y for x, y in zip(my_position, move_direction))
print(two_d_list[my_moved_position[0]][my_moved_position[1]])
my_moved_positionの中身。

my_moved_position
(2, 1)
移動後の位置の数字を出力する
from pprint import pprint
two_d_list = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
pprint(two_d_list, width=20)
my_position = (2, 2) # (row, column)
print(two_d_list[my_position[0]][my_position[1]])
move_direction = (0, -1) # (row_change, column_change)
my_moved_position = tuple(x + y for x, y in zip(my_position, move_direction))
print(two_d_list[my_moved_position[0]][my_moved_position[1]])
出力結果。
8
コメントを残す