ホームページ バックエンド開発 Python チュートリアル Python のマップ、リデュース、フィルターの簡単な分析

Python のマップ、リデュース、フィルターの簡単な分析

Jun 16, 2016 am 08:44 AM
filter map python reduce

1. まず反復可能なオブジェクトとは何かを見てみましょう

組み込みの max 関数を例として、そのドキュメントを表示します:

コードをコピーします コードは次のとおりです:

>> ;> print max.__doc__
max(iterable[, key=func]) -> value
max(a, b, c, ...[, key=func) ]) -> 値

反復可能な引数が 1 つある場合は、その最大の項目を返します。
引数が 2 つ以上ある場合は、最大の引数を返します。


max 関数の最初の形式では、最初のパラメーターは反復可能なオブジェクトです。この場合、反復可能なオブジェクトとは何でしょうか?
コードをコピーします コードは次のとおりです:

>>> max('abcx')
>> ;> 'x'
>>> '4'
>> 2,3 ))
>>> 3
>>>max([1,2,4])

yield を使用して反復可能なオブジェクトを生成できます (他の方法もあります):

コードをコピー コードは次のとおりです: def my_range(start,end ):
''' '''
while start <= end:
yield start
start += 1

次のコードを実行します。

コードをコピー コードは次のとおりです:for num in my_range(1, 4):
print num
print max(my_range(1 , 4))

は出力します:

コードをコピー コードは次のとおりです:1
2
3
4
4



2、マップ
map 関数は http://docs.python.org/2/library/functions.html#map で紹介されています:


コードをコピー コード次のように:map(function, iterable, ...)
関数を iterable のすべての項目に適用し、結果のリストを返します。追加の iterable 引数が渡された場合、function は受け取る必要があります。 1 つの反復可能オブジェクトが別の反復可能オブジェクトより短い場合、関数が None の場合は、identity 関数が仮定され、複数の引数がある場合は、その反復可能関数が並列的に適用されます。 () は、すべての反復可能オブジェクトからの対応する項目を含むタプルで構成されるリストを返します (一種の転置操作)。反復可能な引数はシーケンスまたは任意の反復可能なオブジェクトです。

マップ関数カスタム関数は反復可能オブジェクト内の各要素を処理し、すべての処理結果をリストの形式で返します。例:

コードをコピー コードは次のとおりです:def func(x):
''' '''
return x*x

print map(func, [1,2,4,8])print map(func, my_range(1, 4))


実行結果は次のとおりです:



コードをコピー コードは次のとおりです:[1, 4, 16, 64]
[1, 4, 9, 16]

リスト導出によっても実現できます:

コードをコピーします コードは次のとおりです: print [x*x for x in [1,2,4,8]]

3.

を減らす reduce 関数は http://docs.python.org/2/library/functions.html#reduce で次のように紹介されています:


コードをコピー コードは次のとおりです。reduce(function, iterable[,Initializer])
2 つの引数の関数を反復可能項目に左から右に累積的に適用して、反復可能を削減します。たとえば、reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) は ((((1+2)+3)+4)+5) を計算します。左側の引数 x は累積値、右側の引数 y は反復可能からの更新値です。オプションの初期化子が存在する場合、それは計算の反復可能項目の前に配置され、デフォルトとして機能します。 iterable が空の場合、initializer が指定されておらず、iterable に項目が 1 つだけ含まれている場合は、最初の項目が返されます。

これは非常に明確に紹介されています。

Copy code コードは次のとおりです: reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
は同等です

コードをコピー コードは次のとおりです:((((1+2)+3)+4 )+5)

そして:

コードをコピー コードは次のとおりです:reduce(lambda) x、y: x+y、[1、2、3、4、5]、6)

計算と同等
コードをコピー コードは次のとおりです。

(((((6+1) +2) +3)+4)+5)


4. フィルター

フィルタ関数は http://docs.python.org/2/library/functions.html#filter で次のように紹介されています:

コードをコピー コードは次のとおりです。

filter(function, iterable)
関数が true を返す iterable の要素からリストを構築します。 iterable はシーケンス、反復をサポートするコンテナーのいずれかです。 iterable が文字列またはタプルの場合、結果もその型になります。それ以外の場合、関数が None であると仮定され、つまり、 false である iterable のすべての要素が削除されます。 .

filter(function, iterable) は、関数が None でない場合は [item for item in iterable if function(item)] と同等、関数が None の場合は [item for item in iterable if item] と同等であることに注意してください。


パラメーター関数 (関数) は、反復可能オブジェクト内の各要素を処理するために使用されます。要素の処理時に関数が true を返す場合、その要素はリストのメンバーとして返されます。たとえば、文字列内の文字 a をフィルターで除外します。
コードをコピーします コードは次のとおりです。

def func (x):
''' ''
return x != 'a'

print filter(func, 'awake')


実行結果は次のとおりです:
コードをコピーします コードは次のとおりです。

wke
これはリスト内包表記でも実現できます:
コードをコピーします コードは次のとおりです。

print ''.join([x for x in 'awake' if x != 'a'])
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

PSが荷重を見せ続ける理由は何ですか? PSが荷重を見せ続ける理由は何ですか? Apr 06, 2025 pm 06:39 PM

PSの「読み込み」の問題は、リソースアクセスまたは処理の問題によって引き起こされます。ハードディスクの読み取り速度は遅いか悪いです。CrystaldiskInfoを使用して、ハードディスクの健康を確認し、問題のあるハードディスクを置き換えます。不十分なメモリ:高解像度の画像と複雑な層処理に対するPSのニーズを満たすためのメモリをアップグレードします。グラフィックカードドライバーは時代遅れまたは破損しています:ドライバーを更新して、PSとグラフィックスカードの間の通信を最適化します。ファイルパスが長すぎるか、ファイル名に特殊文字があります。短いパスを使用して特殊文字を避けます。 PS独自の問題:PSインストーラーを再インストールまたは修理します。

PSが開始されたときにロードの問題を解決する方法は? PSが開始されたときにロードの問題を解決する方法は? Apr 06, 2025 pm 06:36 PM

ブートがさまざまな理由によって引き起こされる可能性がある場合、「読み込み」に巻き込まれたPS:腐敗したプラグインまたは競合するプラグインを無効にします。破損した構成ファイルの削除または名前変更。不十分なプログラムを閉じたり、メモリをアップグレードしたりして、メモリが不十分であることを避けます。ソリッドステートドライブにアップグレードして、ハードドライブの読み取りをスピードアップします。 PSを再インストールして、破損したシステムファイルまたはインストールパッケージの問題を修復します。エラーログ分析の起動プロセス中にエラー情報を表示します。

PSの負荷速度をスピードアップする方法は? PSの負荷速度をスピードアップする方法は? Apr 06, 2025 pm 06:27 PM

Slow Photoshopの起動の問題を解決するには、次のような多面的なアプローチが必要です。ハードウェアのアップグレード(メモリ、ソリッドステートドライブ、CPU)。時代遅れまたは互換性のないプラグインのアンインストール。システムのゴミと過剰な背景プログラムを定期的にクリーンアップします。無関係なプログラムを慎重に閉鎖する。起動中に多数のファイルを開くことを避けます。

PSがファイルを開いたときにロードの問題を解決する方法は? PSがファイルを開いたときにロードの問題を解決する方法は? Apr 06, 2025 pm 06:33 PM

「ロード」は、PSでファイルを開くときに発生します。理由には、ファイルが大きすぎるか破損しているか、メモリが不十分で、ハードディスクの速度が遅い、グラフィックカードドライバーの問題、PSバージョンまたはプラグインの競合が含まれます。ソリューションは、ファイルのサイズと整合性を確認し、メモリの増加、ハードディスクのアップグレード、グラフィックカードドライバーの更新、不審なプラグインをアンインストールまたは無効にし、PSを再インストールします。この問題は、PSパフォーマンス設定を徐々にチェックして使用し、優れたファイル管理習慣を開発することにより、効果的に解決できます。

PSが常にロードされていることを常に示しているときに、ロードの問題を解決する方法は? PSが常にロードされていることを常に示しているときに、ロードの問題を解決する方法は? Apr 06, 2025 pm 06:30 PM

PSカードは「ロード」ですか?ソリューションには、コンピューターの構成(メモリ、ハードディスク、プロセッサ)の確認、ハードディスクの断片化のクリーニング、グラフィックカードドライバーの更新、PS設定の調整、PSの再インストール、優れたプログラミング習慣の開発が含まれます。

PSフェザーリングは、遷移の柔らかさをどのように制御しますか? PSフェザーリングは、遷移の柔らかさをどのように制御しますか? Apr 06, 2025 pm 07:33 PM

羽毛の鍵は、その漸進的な性質を理解することです。 PS自体は、勾配曲線を直接制御するオプションを提供しませんが、複数の羽毛、マッチングマスク、および細かい選択により、半径と勾配の柔らかさを柔軟に調整して、自然な遷移効果を実現できます。

インストール後にMySQLの使用方法 インストール後にMySQLの使用方法 Apr 08, 2025 am 11:48 AM

この記事では、MySQLデータベースの操作を紹介します。まず、MySQLWorkBenchやコマンドラインクライアントなど、MySQLクライアントをインストールする必要があります。 1. mysql-uroot-pコマンドを使用してサーバーに接続し、ルートアカウントパスワードでログインします。 2。CreatedAtaBaseを使用してデータベースを作成し、データベースを選択します。 3. createTableを使用してテーブルを作成し、フィールドとデータ型を定義します。 4. INSERTINTOを使用してデータを挿入し、データをクエリし、更新することでデータを更新し、削除してデータを削除します。これらの手順を習得することによってのみ、一般的な問題に対処することを学び、データベースのパフォーマンスを最適化することでMySQLを効率的に使用できます。

PSカードがロードインターフェイスにある場合はどうすればよいですか? PSカードがロードインターフェイスにある場合はどうすればよいですか? Apr 06, 2025 pm 06:54 PM

PSカードの読み込みインターフェイスは、ソフトウェア自体(ファイルの破損またはプラグインの競合)、システム環境(ドライバーまたはシステムファイルの破損)、またはハードウェア(ハードディスクの破損またはメモリスティックの障害)によって引き起こされる場合があります。まず、コンピューターリソースで十分かどうかを確認し、バックグラウンドプログラムを閉じ、メモリとCPUリソースをリリースします。 PSのインストールを修正するか、プラグインの互換性の問題を確認してください。 PSバージョンを更新またはフォールバックします。グラフィックカードドライバーをチェックして更新し、システムファイルチェックを実行します。上記の問題をトラブルシューティングする場合は、ハードディスク検出とメモリテストを試すことができます。

See all articles