【技術情報配信】Python Tips
お疲れ様です。
みなさんPython使ってますか?
自身は最近Pythonを使うことが多く、「Pythonicなコードを」と心がけてます。
組み込み機能(言語仕様)をよく知ることで、洗練されたコードが書けるはずです。
そのあたりを紹介してみます。
少し余談ですが「Mojo」って言語チェックされたことありますか?
Python互換でC並みの速さって触れ込みの言語でしたよね。
まだまだ開発(進化)中の言語のようですが、
改めてベースとなるPythonの仕様を深く理解しておくのは無駄ではないなと感じますね。
というわけで本題に戻ります。
ループを回すとき、要素と一緒に「今何番目か」というインデックス番号も扱いたい場面ってありますよね。
その際にこのような書き方していませんか?
その①:カウンタ変数を手動で管理
i = 0
fruits = [“apple”, “banana”, “cherry”, “orange”]
for fruit in fruits:
print(f”{i}番目: {fruit}”)
i += 1
その②:range(len())を使用
for i in range(len(fruits)):
print(f”{i}番目: {fruits[i]}”)
他言語の書き方をそのまま持ち込んだような形ですね。
Pythonには「enumerate()」という機能が用意されてます。
[enumerate()使用]
fruits = [“apple”, “banana”, “cherry”, “orange”]
# enumerate() を使うことでインデックス(i)と要素(fruit)を同時に取り出せる
for i, fruit in enumerate(fruits):
print(f”{i}番目: {fruit}”)
不要な変数、演算、参照がなくなり、
コードが「Pythonらしく」スッキリしましたよね。
言語が用意してくれた便利な道具を積極的に活用していきましょう。
— おまけ —
「enumerate」のちょっとした小技です。
「1番目、2番目、、、」と1から数えたい場合は引数に「start」を指定することで対応可能。
「i + 1」なんて記述は不要です。
for i, fruit in enumerate(fruits, start=1):
print(f”{i}番目: {fruit}”)
コードから「余計な演算」が消えて、意図もより明確になりますね。
※ I’m not exactly a Python expert, so if you notice anything wrong or weird, please let me know!
以上
システムエキスパート職 M.H
