【現役エンジニア伝授】Pythonのレベルをレベルアップする4つの小技

 Pythonは現代で、もっとも人気の言語の一つです。
 初心者にもわかりやすい言語で、バックエンドの開発ができたり、特に機械学習やデータサイエンスで人気に拍車がかかりました。InstagramなどはPythonを使って開発がされています。

 SUNABACOプログラミングスクールでは、卒業制作でPythonのフレームワークFlaskを使ってオリジナルアプリの制作をおこないますよ!

 Pythonの優れた点の1つは、作業を簡単に行えることです。
 そして、Pythonには、コードをより綺麗に、読みやすく、書きやすくするため技がたくさん公開されてします。

不要なforループを使わずに書いたり、より高速に処理したりとかですね。


 Python初心者からPython中級者にレベルアップする、技を紹介いたします。

 Webデベロッパーを目指す方は、まずこちらの記事▼

range(len())は、enumerate()で置き換えよう

 リストやタプルなどをfor loopで全て表示するような場合、多くの人はrange(len())を利用していると思います。こんな感じで、

names = ['Tarou', 'Bob', 'Yuka', 'Risa']
for i in range(len(names)):
  print(i, names[i])

 しかし、これよりもっと綺麗な方法があります。それがenumerate()関数です。
 enumerate関数は、各アイテムのインデックスと値を格納する列挙オブジェクトを返します。
 実際に見てみましょう。

names = ['Tarou', 'Bob', 'Yuka', 'Risa']
for idx, name in enumerate(names):
  print(idx, name)

 これらは両方同じものを返します。

四角かっこを使用して辞書アイテムを取得するのをやめ、代わりに.get()を使用しよう

 例えば次のような辞書を持っていた場合:

sunaco = { 'age':20, 'gender':'female', 'employed':True }

 もし、上記の辞書からage(年齢)を引っ張りたいととき、多くの人は、sunaco["age"]とするでしょう。

 でももし、辞書に存在しないものにループしているときにアクセスした場合、これではErrorが返って中断してしまいます。そこで、get()関数を利用してみましょう。
 このメソッドは、キーが見つからない場合は単にNoneを返し、その後も続行します。

sunaco = { 'age':20, 'gender':'female', 'employed':True }
print(sunaco.get('age')) 
# Returns:
# 20

Zip()を使用して複数のリストの反復を簡単にしよう

 リストなど複数が与えられ、それぞれをまとめて繰り返す必要がある場合がよくあります。
 range(len())という方法を使用できますが、これ少し読みにくいんですよね。

names = ['Tanaka', 'Sasaki', 'Yoshida']
ages = [32, 28, 37]
gender = ['Male', 'Female', 'Female']

古いやり方の場合:
for_looped = []
for i in range(len(names)):
for_looped.append((names[i], ages[i], gender[i]))
print(for_looped)

 これは全く問題のない方法なのですが、繰り返し処理するアイテムの数によっては、面倒になる可能性があります。
 そんな時は、Pythonの組み込みzip()関数を使用してみましょう。

names = ['Tanaka', 'Sasaki', 'Yoshida']
ages = [32, 28, 37]
gender = ['Male', 'Female', 'Female']

#zip()を使用してリストを圧縮
zipped = zip(name, ages, gender)
zipped_list = list(zipped)
print(zipped_list)

 こちらの方が圧倒的にスッキリしてますね!

f-stringを使用してコンソールに簡単にする

 Python 3.8以降では、f-stringを使用して "=" の文字を使用してコードを自己文書化することもできるようになりました。
 どういうことかというと、変数の値をコンソールに出力するときに、f "variable_name = {variable_name}"と書く必要がなくなったということです。

variable = "Hello World"
print(f "variable = {variable}")

# 戻り値
#variable = Hello World

 今までは上記のようでしたが、今は、

variable = "Hello World"
print(f "{variable =}")

# 戻り値
#variable = Hello World

 微妙な違いですが、少しでもコードが読みやすくなるのは嬉しいです。

まとめ

 微妙な違いと思ったかもしれませんが、これらの心掛けが微妙なエラーを防ぎ、コミュニケーションをより迅速に行うことに繋がっていきますので、慣れてきた人は意識をしてみると良いでしょう。