ホームページ バックエンド開発 Python チュートリアル Python 関数型プログラミングのサンプル チュートリアル

Python 関数型プログラミングのサンプル チュートリアル

Jun 30, 2017 pm 04:08 PM
プログラミング

関数型プログラミングは一連の関数を使って問題を解決する 一般的なプログラミングの考え方によれば、問題に直面したとき、私たちの考え方は「どうするか」ですが、関数型プログラミングの考え方は「何をしたいか」です。 。関数型プログラミングの特徴については、今はまとめませんが、関数型プログラミングとは何かを理解するために、直接例を使用してみましょう。

ラムダ式 (匿名関数):

通常の関数と匿名関数の定義方法:


#Ordinary function def add(a,b):

   return a + bprint add(2,3) 
#匿名函数add = lambda a,b : a + bprint add(2,3)#========输出===========5
5
ログイン後にコピー


匿名関数の命名規則、確認済みlamdba キーワードの場合、コロン (:) の左側は関数が受け取るパラメータ (a, b) を表し、コロン (:) の右側は関数の戻り値 (a+b) を表します。

lamdbaは作成時に名前を付ける必要がないので、匿名関数と呼ばれます^_^

マップ関数:

文字列の長さを計算する


abc = ['com','fnng','cnblogs']for i in range(len(abc)):    print len(abc[i])#========输出===========347
ログイン後にコピー

abc文字列配列を定義し、abcを計算する各文字列の長さ。出力配列をループします。

map() 関数がこのプロセスをどのように実装するかを見てみましょう。


abc_len = map(len,['hao','fnng','cnblogs'])print abc_len#========输出===========[3, 4, 7]
ログイン後にコピー

出力結果は同じですが、形式が異なります。最初のものは単純な数値であり、map() 関数の出力は配列の形式を維持します。

大文字と小文字の変換;

Python は大文字と小文字を変換する upper() と lower() を提供します。


#大文字変換 ​​ss='hello WORLD!'
print ss.upper() #大文字に変換 print ss. lower() #小文字に変換 #========出力=== = =======ハローワールド! hello world!


map() 関数を使用して変換します:


def to_lower(item):    return item.lower()name = map(to_lower,['cOm','FNng','cnBLoGs'])print name#========输出===========['com', 'fnng', 'cnblogs']
ログイン後にコピー

この例では、関数 toUpper を作成したことがわかりますが、この関数は渡された値を変更しません。渡された値に対して簡単な操作を実行して、それを返すだけです。次に、これをmap関数で使用して、やりたいことを明確に記述します。

通常の方法で文字列の大文字と小文字の変換を実装する方法を見てみましょう:


abc = ['cOm','FNng','cnBLoGs']lowname = []for i in range(len(abc)):    lowname.append(abc[i].lower())print lowname#========输出===========['hao', 'fnng', 'cnblogs']
ログイン後にコピー

map() 関数とラムダ式 (匿名関数) を使用すると、より強力な関数を実現できます。

#正方形を見つける#0*0,1*1,2*2,3*3,....8*8squares = map(lambda x : x*x ,range(9))print squares#=== =====Output===========[0, 1, 4, 9, 16, 25, 36, 49, 64]

Reduce関数:

def add(a,b):    return a+b

add = reduce(add,[2,3,4])print add#========输出===========9  对于Reduce函数每次是需要对两个数据进行处理的,首选取2 和3 ,通过add函数相加之后得到5,接着拿5和4 ,再由add函数处理,最终得到9 。
ログイン後にコピー

先ほどのmap関数の例ではMap 関数は一度に 1 つのデータのみを処理することがわかります。

そして、Reduce 関数とラムダ式を使用して階乗を実装することがいかに簡単であるかを発見しました:

#5Factorial#5! =1*2*3*4*5printreduce(lambda x,y: x*y, range(1,6))#========出力===========120

map とreduce に加えて、Python には補助関数として filter、find、all、any などの関数もあり (他の関数型言語でも利用可能)、これによりコードがより簡潔で読みやすくなります。より複雑な例を見てみましょう:

#配列内の正の整数の値を計算します。number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8] カウント = 0 sum = 0for i in range(len(number)):

if number[i]>0:
        count += 1
        sum += number[i]print sum,countif count>0:
    average = sum/countprint average
ログイン後にコピー

#========出力===========30 6 5

関数型プログラミングを使用する場合、この例は次のように書くことができます:

number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8]

sum = filter(lambda x: x>0, number)

average = reduce(lambda x,y: x+y, sum)/len(sum)print average
ログイン後にコピー

#========Output===========5

最後に、関数型プログラミングには次の利点があります:

1) コードが単純になります。
2) データセット、演算、戻り値がすべてまとめられています。
3) コードを読むと、ループ本体がないため、いくつかの一時変数と前後する変数のロジックを保存できます。
4) コードは、実行方法ではなく、実行したいことを記述するものになります。


以上が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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

正規表現を使用してPHP配列から重複した値を削除します 正規表現を使用してPHP配列から重複した値を削除します Apr 26, 2024 pm 04:33 PM

正規表現を使用して PHP 配列から重複値を削除する方法: 正規表現 /(.*)(.+)/i を使用して、重複値を照合して置換します。配列要素を反復処理し、preg_match を使用して一致をチェックします。一致する場合は値をスキップし、一致しない場合は重複値のない新しい配列に追加します。

プログラミングは何のためにあるのか、それを学ぶと何の役に立つのか? プログラミングは何のためにあるのか、それを学ぶと何の役に立つのか? Apr 28, 2024 pm 01:34 PM

1. プログラミングは、Web サイト、モバイル アプリケーション、ゲーム、データ分析ツールなど、さまざまなソフトウェアやアプリケーションの開発に使用できます。その応用分野は非常に幅広く、科学研究、医療、金融、教育、エンターテイメントなど、ほぼすべての業界をカバーしています。 2. プログラミングを学ぶことは、問題解決スキルと論理的思考スキルを向上させるのに役立ちます。プログラミング中、問題を分析して理解し、解決策を見つけてコードに変換する必要があります。この考え方は、分析能力と抽象能力を養い、実際的な問題を解決する能力を向上させることができます。

Golang を使用してブラウザベースのアプリケーションを構築する Golang を使用してブラウザベースのアプリケーションを構築する Apr 08, 2024 am 09:24 AM

Golang を使用してブラウザベースのアプリケーションを構築する Golang は JavaScript と組み合わせて、動的なフロントエンド エクスペリエンスを構築します。 Golang をインストールする: https://golang.org/doc/install にアクセスします。 Golang プロジェクトをセットアップします。 main.go というファイルを作成します。 GorillaWebToolkit の使用: HTTP リクエストを処理するための GorillaWebToolkit コードを追加します。 HTML テンプレートの作成: template サブディレクトリに、メイン テンプレートであるindex.html を作成します。

コーディングの鍵: 初心者のための Python の力を解き放つ コーディングの鍵: 初心者のための Python の力を解き放つ Oct 11, 2024 pm 12:17 PM

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

Java をシンプルに: プログラミング能力を高める初心者向けガイド Java をシンプルに: プログラミング能力を高める初心者向けガイド Oct 11, 2024 pm 06:30 PM

Java をシンプルに: プログラミング能力の初心者向けガイド はじめに Java は、モバイル アプリケーションからエンタープライズ レベルのシステムに至るまで、あらゆるもので使用される強力なプログラミング言語です。初心者にとって、Java の構文はシンプルで理解しやすいため、プログラミングの学習に最適です。基本構文 Java は、クラスベースのオブジェクト指向プログラミング パラダイムを使用します。クラスは、関連するデータと動作をまとめて編成するテンプレートです。簡単な Java クラスの例を次に示します。 publicclassperson{privateStringname;privateintage;

Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Oct 11, 2024 pm 08:58 PM

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

C の謎を解く: 新人プログラマーのための明確でシンプルな道 C の謎を解く: 新人プログラマーのための明確でシンプルな道 Oct 11, 2024 pm 10:47 PM

C は、初心者がシステム プログラミングを学習するのに最適な選択肢です。ヘッダー ファイル、関数、メイン関数のコンポーネントが含まれています。 「HelloWorld」を印刷できる単純な C プログラムには、標準入出力関数宣言を含むヘッダー ファイルが必要で、main 関数で printf 関数を使用して印刷します。 C プログラムは、GCC コンパイラーを使用してコンパイルして実行できます。基本をマスターしたら、データ型、関数、配列、ファイル処理などのトピックに進み、熟練した C プログラマーになることができます。

See all articles