問題:Pythonで1行のif条件代入を行うには?
例を示します。
x = 2boo = True
boo
が True
ならば x
の値を 42
にセットし、そうでなければ何もしない、というコードから始めるとする。
これをPythonで実現するためのさまざまな方法に飛び込んでみましょう。 まずは概要からです:
演習です。 コードを実行します。 すべての出力は同じですか?
次に、これらのメソッドのそれぞれに飛び込んで、あなたのワンライナー超能力を高めます!
目次
Method 1: Ternary Operator
ブール式 c
が True
に評価されると、最も基本的な Ternary Operator x if c else y
は、式 x
を返します。 そうでなければ、式c
がFalse
と評価された場合、三項演算子は代替式y
を返す。
<OnTrue> if <Condition> else <OnFalse>
演算子 | 説明 |
---|---|
<OnTrue> | オペレータの戻り式が、<の場合、そのオペレータは、を返します。 と評価される True |
<Condition> | <On True> または <On False> 分岐を返すかどうかを決定する条件です。 |
<OnFalse> | 条件が False |
例の問題に戻りましょう!
OnFalse> 条件を評価した場合、そのオペレータの戻り式は、次のようになります。 x
の値を、boo
が True
ならば 42
に設定し、そうでなければ何もしない、としたいのですね。 三項演算子は使えますが、コードをわかりやすくするために...else x
の部分を省くことはできないでしょうか? 次のメソッドでは、その方法をご紹介します。
三項演算子についての理解を深めるには、次の動画をご覧ください:
また、関連記事もご覧いただけます。
- Python One Line Ternary
Method 2: Single-Line If Statement
前の方法と同様に、boo
が True
であれば x
を 42
にセットし、それ以外は何もしたくないのですが、どうすればいいですか? しかし、冗長なelse分岐を持ちたくはないですよね。 Pythonでこれを行うにはどうしたらよいでしょうか。
三項演算子の else の部分をスキップする解決策は驚くほど簡単です。else 分岐のない標準的な if 文を使用し、それを 1 行のコードに書きます:
if boo: x = 42
1 行に何を詰め込めるかについては、「1 行 Python で If-Then-Else 」チュートリアル ビデオを見てください。
方法 3: 三項タプル構文ハック
三項演算子の短縮形は、次のタプル構文になります。
構文。 角括弧で囲まれたタプル(x, y)
と条件c
からなるタプル構文(x, y)
を使用することができる。 このタプル構文をより直感的に表現する方法を紹介する。
(<OnFalse>, <OnTrue>)
演算子 | 説明 |
---|---|
<OnTrue> | オペレータの戻り式は、以下の場合に表示されるようになります。 と評価される True |
<Condition> | <On True> または <On False> 分岐を返すかどうかを決定する条件です。 |
<OnFalse> | 条件が False |
In fact.を評価した場合でのオペレータの戻り式。 基本的な三項演算子と比較すると、<OnFalse>
と<OnTrue>
のオペランドの順序が逆転しているだけです。 まず、条件が成立しない場合に返される分岐があります。 次に、条件が成立したときに返される分岐を実行します。
x = (x, 42)
賢いですね! 条件 boo
が成立しているので、変数 x
に渡される戻り値は <OnTrue>
ブランチ 42
になっています。
これで混乱しても気にしないでください-あなただけではありません。 私の詳細なブログ記事を勉強することで、タプル構文を一度で明確にすることができます。
関連記事。 Python Ternary – Tuple Syntax Hack
Python One-Liners Book
Python プログラマーはこれらの便利なワンライナーでコンピューター サイエンスのスキルを向上させます。
Python One-Liners では “one-liners” の読み方、書き方:コードの 1 行に詰まった有用機能の簡単な文について学習することができます。 この本の5つの章では、ヒントとトリック、正規表現、機械学習、コアデータサイエンスのトピック、および便利なアルゴリズムがカバーされています。 ワンライナーの詳細な説明は、コンピュータサイエンスの重要な概念を紹介し、コーディングと分析のスキルを向上させます。 リスト内包、スライス、ラムダ関数、正規表現、mapとreduce関数、スライス代入など、Pythonの高度な機能を学ぶことができます。 また、以下の方法についても学びます。
– データ構造を活用して実世界の問題を解決する。例えば、平均以上の汚染度を持つ都市を見つけるためにブールインデックスを使用する
– 配列、形状、軸、型、放送、高度なインデックス付け、スライス、ソート、検索、集約、統計などの NumPy 基本を使う
– 多次元データ配列の基本統計と教師なし学習の K-Means アルゴリズムを計算する
– グループ化と名前付きグループを使ってより進んだ正規表現を作成する。 負のルックヘッド、エスケープ文字、空白、文字セット(および負の文字セット)、 greedy/nongreedy 演算子
– アナグラム、回文、スーパーセット、順列を含むコンピュータ科学の幅広いテーマを理解することができる。 この本を読み終わる頃には、Pythonの最も洗練された書き方を知り、たった1行で簡潔で美しい「Pythonアート」の作品を作ることができるようになることでしょう。
Get your Python One-Liners Now!!!
分散システムの研究者として働いていたとき、Christian Mayer博士はコンピュータサイエンスの学生に教えることへの愛に気付きました。
学生がより高いレベルのPythonの成功に到達できるように、彼はプログラミング教育ウェブサイトFinxter.comを設立しました。 人気のプログラミング本「Python One-Liners (NoStarch 2020)」の著者、自費出版本の「Coffee Break Python」シリーズの共著者、コンピュータサイエンスの愛好家、フリーランサー、世界でトップ 10 に入る規模の Python ブログのオーナーです。
彼の情熱は書くことと読むこととコーディングすることです。 しかし、彼の最大の情熱は、Finxterを通じて意欲的なコーダーを支援し、彼らのスキルを向上させることです。
ここで彼の無料メールアカデミーに参加することができます。