わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Pythonの,リストのリストのインデントについて

 「リストのリスト」は,例えば次のように書くことができます.

a = [[1, 2], [3, 4], [5, 6]]

 このリストの全体はprint(a)で,一部は例えばprint(a[0])やprint(a[0][0])で,出力できます.
 代入の文は,次のように書くこともできます.

a = [[1, 2],
   [3, 4],
   [5, 6]]
a = [
 [1, 2],
 [3, 4],
 [5, 6]
]

 次のように書いたほうが,見やすいんじゃないかと,思った人はいませんか?

a = [[1, 2],
     [3, 4],
     [5, 6]]

 たしかに見やすくなりますが,このように2行目以降をインデント(字下げ)しようと思うと,行のはじめに自分で空白を打ち込む(手作業でインデントする)必要が生じます.
 リストのリストを複数行で書くときの,書きやすく読みやすいルールは,次の通りです.

  • 外側のリストの開始となる「[」の直後で,改行します.
  • 内側のリストでは字下げを行い,字下げの文字数を同じにします.
  • 外側のリストの終了の「]」は,文(1個の処理)の最初の文字と,字下げの文字数を同じにします.

 このルールを満たしているのは,以下のコードです.

a = [
 [1, 2],
 [3, 4],
 [5, 6]
]

 ルールの3番目についても,「a」と,最後の「]」が,ともに字下げなし(字下げの文字数は0で同じ)ですので,満たしています.
 ちなみに,複数の行で,字下げの文字数を同じにすることを,「インデントを揃える」と言います.
 こういったインデントは,プログラムを読んだり書いたりする「人」のためのルールです(ただしPythonでは「:」のあとのように,文法上,必要なインデントもあります).ルールに従っていなかったり,連続する行が不揃いになっていたりしても,この科目では,課題の条件の通りに動作すれば正解にします.
 「なるほど」と思ったら,この投稿に「高く評価」をつけてください.

 ここまでを授業のTeamsに投稿したのですが,Google Colabではきれいにインデントしてくれなかったのでした.Enterキーを入れるのみで,手作業でのインデントをしなければ,例えば次のような表示になります.

a = [
    [1, 2],
     [3, 4],
      [5, 6]]

 paiza.IOのPython3で,a = [[1, 2], [3, 4], [5, 6]]を書いてから,改行を入れると,次のようになりました.

a = [
    [1, 2],
    [3, 4],
    [5, 6]
    ]

 オンライン実行環境以外では,EmacsPythonモードで,改行を入れると,次のようになってくれました.上の「次のように書いたほうが,見やすいんじゃないか」に,合致しました.

a = [[1, 2],
     [3, 4],
     [5, 6]]

 Visual Studio Codeでは,こうなりました.

a = [
    [1, 2],
      [3, 4],
        [5, 6]
        ]