#公開理由
・Qiitaのコメントで内包表現について言及して頂き、今が理解するチャンスだと思った為
(『Pythonチュートリアル』で内包表記自体は聞いたことあるのですが、難しそうで逃げてました。今がチャンス!)
#内包表記の文法
文法自体は見た目ほど難しくなさそうです。
(難しそうと思って逃げたのが過去の自分・・・汗)
[処理内容 for x in リストなど]
個人的には次の様に分解すると個人的にしっくりきました。
「for」以降はPythonの普通のfor文と形に変わりはないですしね。
処理内容が前に来たfor文みたいな印象。
#サンプルコード(内包表記)
各要素を3倍するコード
num_list = [-4, -3, -2, -1, 0, 1, 2, 3, 4]
naiho = [x * 3 for x in num_list]
print(naiho)
または、名前に苗字を入れるコード
gotobun = ["ithika", "nino", "miku", "yotsuba", "itsuki"]
hanayome = ["nakano " + z for z in gotobun]
print(hanayome)
#出力結果(内包表記)
計算は普通に出来るし
[-12, -9, -6, -3, 0, 3, 6, 9, 12]
文字列を作るのも簡単ですね。工夫すれば使える場面は多そう。
['nakano ithika', 'nakano nino', 'nakano miku', 'nakano yotsuba', 'nakano itsuki']
#サンプルコード(内包表記無ver)
上記2つのsampleコードをfor文で処理しようとすると次の様になりそうです。
num_list = [-4, -3, -2, -1, 0, 1, 2, 3, 4]
not_naiho = []
for y in num_list:
y *= 3
not_naiho.append(y)
print(not_naiho)
gotobun = ["ithika", "nino", "miku", "yotsuba", "itsuki"]
hanayome = []
for a in gotobun:
a = "nakano " + a
hanayome.append(a)
print(hanayome)
#出力結果(内包表記無ver)
内包有無で変わりはないのですが、一応書いておきます。
[-12, -9, -6, -3, 0, 3, 6, 9, 12]
['nakano ithika', 'nakano nino', 'nakano miku', 'nakano yotsuba', 'nakano itsuki']
#感想
・内包表記を使うことで、for文を思ったより簡略に書くことが出来ると感じた
・内包表記に慣れていないのであれば、まずfor以下を書いてから最後に処理内容を書くようにすると
迷うことが少なくなると思いました。