人生は短い、初心者は Python を学びましょう!
私は新人の兄弟です。今日は、6 つの魔法の組み込み関数を一度に共有します。多くのコンピューター書籍では、通常、これらは高階関数としても紹介されています。日々の仕事でも、コードをより速く理解しやすくするためにこれらを使用することがよくあります。
Lambda 関数は、匿名関数、つまり名前のない関数を作成するために使用されます。これは単なる式であり、関数本体は def よりもはるかに単純です。匿名関数は、単一の操作を実行し、1 行で記述できる関数を作成する必要がある場合に使用されます。
lambda [arg1 [,arg2,.....argn]]:expression
ラムダの本体は式であり、コード ブロックではありません。ラムダ式にカプセル化できるロジックは限られています。例:
lambda x: x+2
def で定義された関数をいつでも呼び出したい場合は、ラムダ関数をそのような関数オブジェクトに割り当てることができます。
add2 = lambda x: x+2 add2(10)
出力結果:
Lambda 関数を使用すると、コードを大幅に簡略化できます。別の例を次に示します。
上の図に示すように、ラムダ関数を使用した 1 行のコードで結果リスト newlist が生成されます。
map() 関数は、関数を入力リストのすべての要素にマップします。
map(function,iterable)
たとえば、最初に大文字の入力単語を返す関数を作成し、次にこの関数をリストの色のすべての要素に適用します。
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 関数を使用できます。 [1]
これと関数の最大の違いは、reduce() のマッピング関数 (関数) が 2 つのパラメーターを受け取るのに対し、map は 1 つのパラメーターを受け取ることです。
reduce(function, iterable[, initializer])
次に、例を使用して、reduce() のコード実行プロセスを示します。
from functools import reduce def add(x, y) : # 两数相加 return x + y numbers = [1,2,3,4,5] sum1 = reduce(add, numbers) # 计算列表和
結果 sum1 = 15 が得られ、コードの実行プロセスは以下のアニメーションに示されています。
▲コード実行プロセスのアニメーション
上の図と組み合わせると、reduce が加算関数 add() を list[1 , 2,3,4,5] の場合、マッピング関数は 2 つのパラメーターを受け取り、reduce() はリストの次の要素で結果を累積し続けます。
さらに、匿名関数 lambda を使用して、reduce 関数と連携することもでき、より合理化できます。
from functools import reduce numbers = [1,2,3,4,5] sum2 = reduce(lambda x, y: x+y, numbers)
出力 sum2= 15 が得られます。これは前の結果と一致します。
注:reduce() は Python 3.x [2] 以降 functools モジュールに移動されました。これを使用したい場合は、 functools import reduce からインポートする必要があります。
enumerate() 関数は、データとデータ添え字をリストしながら、走査可能なデータ オブジェクト (リスト、タプル、文字列など) をインデックス シーケンスに結合するために使用されます。ループします。その構文は次のとおりです:
enumerate(iterable, start=0)
2 つのパラメータ、1 つはシーケンス、イテレータ、または反復をサポートするその他のオブジェクトで、もう 1 つは添え字の開始位置であり、デフォルトでは 0 から始まります。カウンタの開始番号を定義してから使用されます。
colors = ['red', 'yellow', 'green', 'black'] result = enumerate(colors)
色を格納するカラーリストがある場合、実行後に列挙オブジェクトを取得します。 forループ内で直接使用することも、リストに変換して使用することもできますが、具体的な使い方は以下の通りです。
rreeeezip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表[3]。
我们还是用两个列表作为例子演示:
colors = ['red', 'yellow', 'green', 'black'] fruits = ['apple', 'pineapple', 'grapes', 'cherry'] for item in zip(colors,fruits): print(item)
输出结果:
当我们使用zip()函数时,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
prices =[100,50,120] for item in zip(colors,fruits,prices): print(item)
filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表,其语法如下所示[4]。
filter(function, iterable)
比如举个例子,我们可以先创建一个函数来检查单词是否为大写,然后使用filter()函数过滤出列表中的所有奇数:
def is_odd(n): return n % 2 == 1 old_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] new_list = filter(is_odd, old_list) print(newlist)
输出结果:
今天分享的这6个内置函数,在使用 Python 进行数据分析或者其他复杂的自动化任务时非常方便。
以上がPython の 6 つの魔法の組み込み関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。