# -*- coding: utf-8 -*-
"""
mutableデータの挙動の確認
"""


def main():
    # ２次元listの初期化部
    # １次元listを作成→別のlistの要素化→繰り返し連結
    # 下記の形でも同様のデータを作成できる
    # x = [[0, "匿名希望", "トクメイキボウ", 0, 0.0]] * 3
    x0 = [0, "匿名希望", "トクメイキボウ", 0, 0.0]
    x  = [x0] * 2  # 繰り返し連結（空listにx0を2回appendと等価）
    x.append(x0)   # x0を連結（↑の際に * 3 とするのと等価）
    # 最後に，別途で作成し直したlistを追加してみる
    """ 指示ここから """
    # x0と同じ内容のlistを新規作成し，xに追加する命令文を書きなさい
    # （ x.append(x0) の形はNG）
    x.append([0, "匿名希望", "トクメイキボウ", 0, 0.0])
    """ 指示ここまで """

    # listの表示
    print("はじめ")
    for s in x:
        print(s)

    # x[1]の中の要素を更新
    x[1][0] = 7
    x[1][1] = "錦蛇"
    x[1][2] = "ニシキヘビ"
    x[1][3] = 9
    x[1][4] = 12.3

    # listの表示
    # x[0]からx[2]は更新が連動している
    print("\nx[1]を書き換え")
    for s in x:
        print(s)

    # xの要素を差し替え
    x[1] = [6, "雨蛙", "アマガエル", 5, 4.9]
    x[3] = x0

    # listの表示
    # xの要素の差し替え自体は連動しない
    # x0そのものが更新されて，それを参照していたことが分かる
    # （x[3]が匿名希望では無くなる）
    print("\nx[1]を差し替え、x[3]=x0")
    for s in x:
        print(s)


if __name__ == "__main__":
    main()
