LoginSignup
0
1

More than 3 years have passed since last update.

【Python】内包表記について簡潔に書いてみる

Last updated at Posted at 2020-07-30

公開理由

・Qiitaのコメントで内包表現について言及して頂き、今が理解するチャンスだと思った為
 (『Pythonチュートリアル』で内包表記自体は聞いたことあるのですが、難しそうで逃げてました。今がチャンス!)

内包表記の文法

文法自体は見た目ほど難しくなさそうです。
(難しそうと思って逃げたのが過去の自分・・・汗)

[処理内容 for x in リストなど]

個人的には次の様に分解すると個人的にしっくりきました。

test.png

「for」以降はPythonの普通のfor文と形に変わりはないですしね。
処理内容が前に来たfor文みたいな印象。

サンプルコード(内包表記)

各要素を3倍するコード

naiho.py
num_list = [-4, -3, -2, -1, 0, 1, 2, 3, 4]

naiho = [x * 3 for x in num_list]
print(naiho)

または、名前に苗字を入れるコード

kawaii.py
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文で処理しようとすると次の様になりそうです。

no_naiho.py
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) 
no_kawaii.py
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以下を書いてから最後に処理内容を書くようにすると
 迷うことが少なくなると思いました。

0
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1