目次
リスト内包表記を使用する
の中国語訳は次のとおりです:
組み込みの sum() 関数を使用すると、このコードを 1 行に圧縮できます。
sum() とリスト内包表記を使用して 1 から 10 までの偶数のリストを生成し、その合計を出力として出力するのに必要なコードは少なくなります。
ショートカットを使用する
Example
要約すると、コード ゴルフは、タスクを達成するためにできるだけ少ない文字数でコードを記述する人気のプログラミング手法です。 Python では、リスト内包表記、ラムダ関数、sum() やsorted() などの組み込み関数の使用など、コード サイズを削減するために使用できる手法がいくつかあります。コード ゴルフは楽しくて勉強になる演習ですが、実際のアプリケーション用のコードを作成する場合は、コードの読みやすさと保守しやすさを常に最優先する必要があります。したがって、できるだけ短いコードを追求する誘惑に駆られるかもしれませんが、自分自身にとっても他の人にとっても、コードを明確で理解しやすいものにしておくことが重要です。

Python でゴルフをコード化する

Aug 19, 2023 pm 11:25 PM
深さ優先検索 (dfs) 動的計画法 (dp) リスト内包表記

Python でゴルフをコード化する

コードゴルフは、特定の問題をできるだけ少ない文字で解決するプログラムを参加者に書くプログラミングコンテストです。言い換えれば、コードゴルフとは、きれいなコードを書くことです。コードゴルフはどのプログラミング言語でも実行できますが、Python はその簡潔な構文と強力な組み込み関数により、この課題に特に適しています。

この記事では、Python でゴルフをコーディングするためのいくつかのヒントと戦略を検討し、適用可能な例と出力を示します。

リスト内包表記を使用する

リスト内包表記は、簡潔で読みやすい方法でリストを作成するための Python の強力なツールです。コード ゴルフでは、リスト内包表記を長いループや条件文に置き換えることができます。たとえば、1 から 10 までのすべての偶数を含むリストを作成する次のコードについて考えてみましょう。 リーリー

このコードはリスト内包表記を使用すると 1 行に減らすことができます:

Example

の中国語訳は次のとおりです:

Example

リーリー ###出力### リーリー

このコードは、for ループと append() メソッドの代わりにリスト内包表記を使用して、前の例と同じ 1 から 10 までの偶数のリストを生成します。リスト内包表記を使用すると、結果を達成するために必要なコードの量を大幅に削減できるため、コード ゴルフにおける強力なツールになります。

組み込み関数を使用する

Python には、一般的な操作を簡潔な方法で実行できる幅広い組み込み関数があります。コードゴルフをプレイするときは、これらの関数とその構文に慣れることが重要です。たとえば、1 から 10 までのすべての偶数の合計を計算する次のコードについて考えてみましょう。 リーリー

組み込みの sum() 関数を使用すると、このコードを 1 行に圧縮できます。

Example

の中国語訳は次のとおりです:

Example

リーリー ###出力### リーリー

sum() とリスト内包表記を使用して 1 から 10 までの偶数のリストを生成し、その合計を出力として出力するのに必要なコードは少なくなります。

ショートカットを使用する

Python には、特定の操作に必要なコードの量を効果的に削減できるショートカットや省略形がいくつかあります。たとえば、リストに特定の値が存在するかどうかを検証する次のコードを見てみましょう。 リーリー

このコードは、functools モジュールの lambda 関数とreduce() 関数を使用して 1 行に圧縮できます。

Example

の中国語訳は次のとおりです:

Example

リーリー ###出力### リーリー

このプログラムは、reduce() 関数と lambda 関数を使用して「Hello, World!」の母音の数を数え、最初の 8 つのフィボナッチ数を生成し、そのシーケンスを出力します。

Lambda関数を使用する

Python では、ラムダ関数は 1 行のコードで宣言できる名前のない関数です。 Lambda 関数は、単純な関数をすばやく定義する必要がある場合のコード圧縮に特に役立ちます。たとえば、各タプルの 2 番目の要素に基づいてタプルのリストを並べ替える次のコードについて考えてみましょう。 リーリー

ラムダ関数を使用して、このコードを 1 行に圧縮します:

Example

の中国語訳は次のとおりです:

Example

リーリー ###出力### リーリー

ラムダ関数を使用すると、別の関数を定義することなく、簡潔で読みやすい方法で並べ替え基準を定義できます。

冗長なコードを避ける

コードゴルフをするときは、冗長なコードや繰り返しのコードを書かないようにすることが重要です。これには、不要な変数、ループ、または条件文が含まれる可能性があります。たとえば、文字列内の母音の数を数える次のコードについて考えてみましょう:

リーリー

count() 関数と str. lower() メソッドを使用すると、このコードを 1 行に圧縮できます。

Example

の中国語訳は次のとおりです:

Example

リーリー ###出力### リーリー

count() 関数と str. lower() メソッドを使用すると、同じ操作をより簡潔で読みやすい方法で実行できます。

コード ゴルフの例

の中国語訳は次のとおりです:

コード ゴルフの例

これまで説明してきたテクニックと戦略のいくつかを実証するために、ゴルフの Python コードの例をいくつか見てみましょう。

例: FizzBu​​zz

FizzBu​​zz 問題は、1 から 100 までの数字を出力し、3 の倍数を「Fizz」に、5 の倍数を「Buzz」に置き換え、両方の倍数である 3 の倍数を「Buzz」に置き換える一般的なコーディングの課題です。複数の数字は「FizzBu​​zz」に置き換えられます。従来のループと条件メソッドを使用した FizzBu​​zz 問題の解決策は次のとおりです:

リーリー

リスト内包表記と文字列連結を使用すると、このコードは 1 行に圧縮できます:

リーリー

リスト内包表記と文字列連結を使用すると、FizzBu​​zz の問題を解決するために必要なコードの量を大幅に削減できます。

出力プログラムは、3 の倍数を「Fizz」に、5 の倍数を「Buzz」に、3 と 5 の倍数の両方の数値を「FizzBu​​zz」に置き換えます。他のすべての数値はそのまま出力されます。

###結論は###

要約すると、コード ゴルフは、タスクを達成するためにできるだけ少ない文字数でコードを記述する人気のプログラミング手法です。 Python では、リスト内包表記、ラムダ関数、sum() やsorted() などの組み込み関数の使用など、コード サイズを削減するために使用できる手法がいくつかあります。コード ゴルフは楽しくて勉強になる演習ですが、実際のアプリケーション用のコードを作成する場合は、コードの読みやすさと保守しやすさを常に最優先する必要があります。したがって、できるだけ短いコードを追求する誘惑に駆られるかもしれませんが、自分自身にとっても他の人にとっても、コードを明確で理解しやすいものにしておくことが重要です。

以上がPython でゴルフをコード化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? 文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? Apr 01, 2025 pm 11:18 PM

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

See all articles