Skip to content

Instantly share code, notes, and snippets.

@MizunagiKB
Last active March 14, 2021 12:38
Show Gist options
  • Save MizunagiKB/a0d8080dcfcb1b51d6803af5ddb18259 to your computer and use it in GitHub Desktop.
Save MizunagiKB/a0d8080dcfcb1b51d6803af5ddb18259 to your computer and use it in GitHub Desktop.
indexの使用方法についての解説
def main():
# index関数は、リストに保存されている物と一致している
# ものを検索します。
# 複数存在している場合は、先に見つかったインデックスを戻します。
# 見つからない場合は ValueError という例外が発生します。
# -----------------------------------------------------------------------
# 数値や文字列が格納されたリストの例)
list_a = [2, 3, 5, 7, 11, 13, 17, 19]
# 以下の場合はインデックスとして 4 を戻します。
search_value = 11
found_index = list_a.index(search_value)
print("index =", found_index)
# -----------------------------------------------------------------------
# 複雑なデータが格納されたリストの例)
list_b = [[1, 2, 3, "A"], [2, 3, 4, "B"], [5, 6, 7, "C"]]
# 前述したように、index関数は一致しているものを検索します。
# ですので、indexに与える物は一致する様に情報を与えます。
# 以下の場合は、インデックスとして 1 を戻します。
search_value = [2, 3, 4, "B"]
found_index = list_b.index(search_value)
print("index =", found_index)
# -----------------------------------------------------------------------
# 記載されているコードを元にした例)
enemy_move_data17 = [[0, 0, 0, 0], [1, 1, 1, 1]]
enemy_move_data18 = [[2, 2, 2, 2], [3, 3, 3, 3]]
enemy_move_data_list = [[17, enemy_move_data17], [18, enemy_move_data18]]
# これは見つかりません。(実行すると例外が発生します)
# found_index = enemy_move_data_list.index(17)
# これは見つかります。
num = enemy_move_data_list.index([17] + [enemy_move_data17])
enemy_move_data = enemy_move_data_list[num][1]
print("enemy_move_data =", enemy_move_data)
# -----------------------------------------------------------------------
# 解決方法1)
# 番号を元に情報が取得したい場合は、事前に空のリストを作ってしまいます。
# まず空のリスト(ここでは None というダミーデータが入っている長さ100のリスト)を予め作ります。
enemy_move_data_list = [None] * 100
# 検索したい番号と情報を結びつけておきます。
enemy_move_data_list[17] = enemy_move_data17
enemy_move_data_list[18] = enemy_move_data18
# これで取得出来ます。
enemy_move_data = enemy_move_data_list[17]
print("enemy_move_data =", enemy_move_data)
# -----------------------------------------------------------------------
# 解決方法2)
# リストを使わずに辞書を使う方法もあります。
# リストではなくて辞書として作成します(名前の最後がlistになってますが)
enemy_move_data_list = {17: enemy_move_data17, 18: enemy_move_data18}
# この方法でも取得出来ます。
enemy_move_data = enemy_move_data_list[17]
print("enemy_move_data =", enemy_move_data)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment