【2020/10/13】にいただいたご質問
Q. ファイル作成の時に行った
tbl = [[x+y for y in range(1,5)] for x in range(10,40,10)]
でどうして結果が
[ [11,12,13,14] , [21,22,23,24] , [31,32,33,34] ]
になるのかが分かりません。
A. ご質問ありがとうございます.解説いたします.
この [ ] の内側に for を記述する形ですが,「リストの内包表記」と呼ばれます.この表現は大変に柔軟性が高く,Python プログラミングではよく用いられます.
ちょっとここで試していただきたいのですが,「QA.ipynb」というノートブックを新規作成してくださいね.
そこで
a = [x for x in ‘武庫川女子大学’]
print(a)
というのを1つのセルに入力して実行して見ていただけますでしょうか.面白い結果(下記)になります.
実行結果:[‘武’, ‘庫’, ‘川’, ‘女’, ‘子’, ‘大’, ‘学’]
このように in の後ろに与えた文字列データを分解して,それぞれの文字を要素とするリストが得られることがわかります.このように与えたデータ列(文字列も含め)の要素を展開した形のリストが得られるわけです.ということは,頂いたご質問でいいますと,
[x+y for y in range(1,5)]
というリストを要素とするリスト(リストのリスト)ができるわけです.また,ここに記述されている変数 x は更に外側の「for x in range(10,40,10)」を展開した要素となるわけです.
いかがでしょうか.