この記事では、python に関する関連知識を提供します, 主に組み込み関数に関する関連事項を紹介します. 主に、Lambda、map、reduce、zip、など、6 つの非常に使いやすい関数を紹介します。 filter 関数や enumerate 関数を一緒に見ていきましょう。
推奨学習: Python ビデオ チュートリアル
Lambda
関数の使用法匿名関数、つまり名前のない関数を作成するために使用されます。これは単なる式であり、関数本体は def よりもはるかに単純です。匿名関数は、単一の操作を実行し、1 行で記述できる関数を作成する必要がある場合に使用されます。
lambda [arg1 [,arg2,.....argn]]:expression
ラムダの本体は式であり、コード ブロックではありません。ラムダ式にカプセル化できるロジックは限られています。例:
lambda x: x+2
def で定義された関数をいつでも呼び出したい場合は、そのような関数オブジェクトに lambda function
を割り当てることができます。
add2 = lambda x: x+2add2(10)
出力結果:
Lambda
関数を使用すると、コードを大幅に簡略化できます。別の例を次に示します。
上の図に示すように、ラムダ関数を使用した 1 行のコードで結果リスト newlist
が生成されます。
map()
この関数は、関数を入力リストのすべての要素にマップします。
map(function,iterable)
たとえば、最初に大文字の入力単語を返す関数を作成し、次にこの関数をリスト colors
内のすべての要素に適用します。
def makeupper(word): return word.upper()colors=['red','yellow','green','black']colors_uppercase=list(map(makeupper,colors))colors_uppercase
さらに、匿名関数 lambda
を使用して、map 関数と連携することもでき、より効率化できます。
colors=['red','yellow','green','black']colors_uppercase=list(map(lambda x: x.upper(),colors))colors_uppercase
Map 関数を使用しない場合は、for ループを使用する必要があります。
上図に示すように、実際に使用すると、Map 関数は要素を順番に列挙する for ループ方式に比べて 1.5 倍高速になります。
Reduce 関数reduce() は、リストに対して計算を実行して結果を返す必要がある場合に非常に便利な関数です。たとえば、整数のリストのすべての要素の積を計算する必要がある場合は、reduce 関数を使用できます。 [1]
reduce() のマッピング関数 (関数) が 2 つのパラメーターを受け取るのに対し、map は 1 つのパラメーターを受け取ることです。
reduce(function, iterable[, initializer])
reduce() のコード実行プロセスを示します。
from functools import reducedef add(x, y) : # 两数相加 return x + y numbers = [1,2,3,4,5]sum1 = reduce(add, numbers) # 计算列表和
sum1 = 15
add() をリスト [1 ,2] に適用することがわかります。 ,3,4,5]、マッピング関数は 2 つのパラメーターを受け取ります。
reduce()結果はリストの次の要素とともに累積され続けます。
匿名関数 lambda を使用して、reduce 関数と連携することもでき、より合理化できます。
from functools import reducenumbers = [1,2,3,4,5]sum2 = reduce(lambda x, y: x+y, numbers)
sum2= 15を取得します。これは前の結果と一致します。
注: Python 3.x 以降、enumerate()reduce()
enumerate functionは functools モジュール [2] に移動されました。これを使用したい場合は、# を使用する必要があります。 ##from functools import reduce
Import.
この関数は、走査可能なデータ オブジェクト (次のような) を変換するために使用されます。リスト、タプル、または文字列) はインデックス シーケンスに結合され、データとデータ添字を同時にリストし、通常は for ループで使用されます。その構文は次のとおりです: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">enumerate(iterable, start=0)</pre><div class="contentsignin">ログイン後にコピー</div></div>
2 つのパラメータ、1 つはシーケンス、イテレータ、または反復をサポートするその他のオブジェクトで、もう 1 つは添え字の開始位置であり、デフォルトでは 0 から始まります。カウンタの開始番号を定義してから使用されます。
colors = ['red', 'yellow', 'green', 'black']result = enumerate(colors)
色を格納するカラーリストがある場合、実行後に列挙オブジェクトを取得します。 forループ内で直接使用することも、リストに変換して使用することもできますが、具体的な使い方は以下の通りです。
for count, element in result: print(f"迭代编号:{count},对应元素:{element}")
Zip 関数
zip()この関数は、反復可能なオブジェクトをパラメータとして受け取り、対応する要素を追加するために使用されます。オブジェクト内でそれをタプルにパックし、これらのタプルで構成されるリストを返します [3]。 デモ例として 2 つのリストを引き続き使用します:
colors = ['red', 'yellow', 'green', 'black']fruits = ['apple', 'pineapple', 'grapes', 'cherry']for item in zip(colors,fruits): print(item)
出力結果:
zip() を使用する場合 関数では、各反復子の要素数が一致しない場合、返されるリストの長さは最も短いオブジェクトと同じになります。 rreeee
filter()
函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表,其语法如下所示[4]。
filter(function, iterable)
比如举个例子,我们可以先创建一个函数来检查单词是否为大写,然后使用filter()
函数过滤出列表中的所有奇数:
def is_odd(n): return n % 2 == 1old_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] new_list = filter(is_odd, old_list)print(newlist)
输出结果:
今天分享的这6个内置函数,在使用 Python 进行数据分析或者其他复杂的自动化任务时非常方便。
推荐学习:python视频教程
以上が超使いやすい6つのPython組み込み関数を紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。