Last active
March 14, 2021 12:38
-
-
Save MizunagiKB/a0d8080dcfcb1b51d6803af5ddb18259 to your computer and use it in GitHub Desktop.
indexの使用方法についての解説
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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