「アルゴリズム論」2020年度Q&A

【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)」を展開した要素となるわけです.

いかがでしょうか.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)