プログラミング入門II
2025.04.23
リスト その1

Back to index page



  1. 本日の作業内容

  2. 前回の宿題について

    今回は簡単な復習問題ということで,基本的には大体の人が出来ていました.この調子で頑張って下さい.

    解答用紙の勝手な改ざんがありました.きちんとそのまま用紙の注意に従って解答を作成してください.

    シートのヘッダ部分削除: 23_68 (年度_番号)

    import random
    
    print('Student number: s246004')   # <-- 書き換える
    for _ in range(5):
        for _ in range(10):
            num = random.randint(1,200)
            print(f'{num:3d}', end=' ')
        print()   # <-- 消さない
    

    「消さない」と指示している print() は学生番号の表示と一続きのもので,解答はそれ以降に記入してください.以下のように学生番号と実行結果が連続した行になってしまって,見づらくなります.

    Student number: s******
    191  48 170 144  60  97 117 144 105 100 
     89 178 166 102 134  87 139 196  85  57 
    118 182  62  69 166   8 180 148 190  52 
     88  13  69  37 163 107 177 126 173 120 
    117 122  33 115 171  50 197  70  40  92 
    

    # #############################
    
    import random
    
    print('Student number: s******')   # <-- 書き換える
    print()   # <-- 消さない
    import random
    

    上の例は元々の解答用紙に import random を付けているのに,自分で再度 import しているものです.

    さて,以下は問題のあるプログラムの例です.参考にしてください.

    for _ in range(1,6):
        for i in range(1,11):
            i=random.randint(1,200)
            print(f'{i: 4}',end='')
        else:
            print()
    

    for 文の range 関数を使って値を入れていく変数 i に変なものを代入しないでください.

    for _ in range(6):
        for _ in range(11):
            i=0
            i+=random.randint(1,200)
            print(f'{i:3}',end=' ')
        print('')    
    

    こちらも同じですね.

    for _ in range(5):
        numbers = [random.randint(1, 200) for _ in range(10)]
        for num in numbers:
            print(f"{num:3}", end=" ")
    

    内側の for 文の数値の表示を終わった後の改行がありません.以下のように結果が1行で表示されています.

    12 195 175 126  48 178 122  88 113   7 175 178 191  25 144  51 113  20 158 125  37 168 118   9  97 153 156  65  99 156  74  98 136  39 143  60  88  78 174  44 179  91  83  68  92 174   2 140   2  55 
    

  3. 前回の復習

    昨年度行ったプログラミング入門Iの範囲のPythonに関する復習で反復処理と文字列に関する演習問題に取り組みました.ただ,それは実際に学習したものの一部にすぎませんので,やらなかった部分についてもしっかりと見返しておいてください.

  4. リスト

    プログラミング言語であればどの言語でも「配列」が用意されています.複数の値を一つの名前で扱うことができる便利なものです.今回学習する「リスト」は,教科書の p.165 にも書いてあるように,「配列をパワーアップさせた」ものです.その分機能が多いので,すべてを理解するには相当な時間がかかります.今回は教科書に沿って基本的なところを見ていくことにします.

    1. 概略

      教科書の p.166 にまとめてある 1 から 9 番までの記述がリストをきちんと説明しているので,まずは,ここをしっかり理解しましょう.また,Fig.7-2 もよく見て理解しましょう.Python はオブジェクト指向型の言語なので,リストもオブジェクトへの参照ということで,型の異なる値などもひとまとめにして扱える便利なものです.

      1. データの構造
      2. リストは複数の値を一つにまとめていますので,リスト自体を print 関数で表示すると,その形態のままで出力されます.以下の例で確認してみてください.

        lst = [1, 2, 3, 4]
        
        print(lst)    
        

      3. 要素の値のみの表示
      4. リストの要素を順に表示するときはインデックスを使用して反復処理を用いて行います.

        lst = [1, 2, 3, 4]
        
        for i in range(0,4):
            print(lst[i])
        

    2. 生成

      リストはリスト表記演算子 [ ] をつかって生成できます.また,list 関数を使っても作成できます.

      ただし,教科書では基本的には最初に要素を確定させたリストを用意して,その要素に対して処理をする例ばかりが出ています.まず,何か自動でリストを作るという作業となると,教科書 p.169 の None を使う,教科書 p.178 の insert メソッドを使う,もしくは次回行う予定の内包表記を使う必要があります.とりあえず下に None と insert メソッドを使用する方法を載せておきます.

      lst = [None] * 10
      
      for i in range(0,10):
          lst[i] = i
      
      print(lst)
      
      lst = []
      
      for i in range(0,10):
          lst.insert(i,i)
      
      print(lst)
      
      None を使う方法 insert を使う方法

      他にも,教科書の p.176 の append を使う方法もあります.この授業では今回は None を使う方法を紹介します.内包表記については後日改めて紹介します.
    3. 要素のアクセス

      リストの要素はインデックスによってアクセスできます.前回まで学習した文字列と同様,インデックスは 0 番から始まります.また,こちらも文字列と同様 負の数によって末尾の要素からの順番でもアクセスできます.

    4. 2次元リスト

      次回行います.

    5. コピー

      こちらも次回行います.

  5. 演習

    今回の演習問題です.

  6. 宿題

    宿題は今回もMoodleを使用します.23日の18:00以降に閲覧可能となります.GWによる特別な日程となりますので,提出も変則的になり,5月1日の10:00としますから注意してください.

  7. 次回の予習範囲

    次回は教科書のp.190-199の範囲を学習しますので,予習をしてきてください.


目次ページに戻る