Pythonでは、リスト内包表記を使って一行でforループとif文を組み合わせることができます。以下にその基本的な形式を示します。
[expression for item in iterable if condition]
この形式では、iterableの各itemに対してconditionがTrueである場合にのみexpressionが評価されます。これにより、コードを簡潔に書くことができます。
例えば、次のようなコードがあるとします。
my_list = ["one", "two", "three"]
result = []
for i in my_list:
if i == "two":
result.append(i)
このコードは、my_listの各要素が”two”である場合にその要素をresultに追加します。これを一行で書くと次のようになります。
result = [i for i in my_list if i == "two"]
この一行のコードは、上記の複数行のコードと全く同じ動作をします。
ただし、一行で書くことが必ずしも良いというわけではありません。Pythonの哲学には「美しい方が醜いよりも良い」「明示的な方が暗黙的なよりも良い」「単純な方が複雑なよりも良い」などといった原則があります。そのため、コードが複雑になりすぎて可読性が低下する場合は、一行で書くのではなく適切に改行やインデントを使って書く方が良いでしょう。
以上がPythonで一行でforとifを使う方法についての説明です。このテクニックを使うことで、コードを簡潔に書くことができますが、常に可読性を意識することが重要です。