【Python】そろそろ使い慣れてきたかな、というときに初心者が覚えるといいこと

この記事では、Pythonを使い始めた初心者がだいたい基本的なことは使い慣れてきたぞ、というときに次に覚えると役に立つことをまとめています。


リスト内包表記

リストの中身が簡単な処理でつくれる場合、リスト内包表記を使うと1行ですっきりした感じで書くことができます。

mylist = [i for i in range(10)]

print(mylist)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

出力例

以下のようにif文を追加することもできます。

mylist = [i for i in range(10) if i%2 == 1]
print(mylist)

[1, 3, 5, 7, 9]

出力例

for文でのリスト操作(enumerate, zip)

for文を使ってリストの中身を順番に取り出す操作を書くことはよくあると思います。
そういうときに以下のような書き方をしている初心者の方は多いのではないでしょうか。

mylist = [i for i in range(10)]

for i in range(len(mylist)):
    print(mylist[i])

もし、中身を順番に取り出したいだけなら、

mylist = [i for i in range(10)]

for i in mylist:
    print(i)

でいいですし、indexと中身の両方を取り出したいなら、"enumerate"を使って、

mylist = [i for i in range(10)]

for i, x in enumerate(mylist):
    print(i, x)

と書くのがおすすめです。

また、複数のリストの中身を同時に取り出す場合は"zip"が使えます。

list1 = [1, 3, 5]
list2 = [2, 4, 6]

for i, j in zip(list1, list2):
    print(i, j)

さらに、enumerateやzipもリスト内包表記に組み込むことができます。

list1 = [1, 3, 5]
list2 = [2, 4, 6]

list3 = [(i, j) for i, j in zip(list1, list2)]
print(list3)

[(1, 2), (3, 4), (5, 6)]

出力例

プログレスバーの表示(tqdm)

データ数が多くて処理に時間がかかるとき、for文が今どのくらい進んでいるのか知りたくなることは多いと思います。
初心者のときにfor文のiをprintさせたりしたことがある方も多いのではないでしょうか。(これは処理が遅くなるのでおすすめしません)
そういったときに便利なのがtqdmで、使い方もとても簡単です。

from tqdm import tqdm

for i in tqdm(range(100)):
    pass

100%|██████████| 100/100 [00:00<00:00, 68322.27it/s]

出力例

tqdmを付け加えるだけでこんな感じのプログレスバーを表示してくれるようになります。

型ヒント

def myfunc(x: int) -> int:
    return x**2

print(myfunc(3))

9

出力例

こんな感じで変数や関数の引数、返り値にどういう型を想定しているのかのヒントを書くことができます。
なくても動作上はなんの問題もないですが、書くことで複数人での共同開発をスムーズにしたり、使っているエディターによっては便利なサポート機能を使うことができます。

将来Pythonでいろいろと開発したいと思っているなら、早いうちから型ヒントを書くように癖をつけておくと良いと思います。

この記事が気に入ったらサポートをしてみませんか?