<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>functoolsPython Tech</title>
	<atom:link href="https://tech.nkhn37.net/category/python/python-libraries/functools/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Sat, 01 Nov 2025 09:16:57 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://tech.nkhn37.net/wp-content/uploads/2021/01/cropped-lion-normal-clear-1-32x32.png</url>
	<title>functoolsPython Tech</title>
	<link>https://tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Python】partial関数の使い方の基本 ~関数の部分適用~</title>
		<link>https://tech.nkhn37.net/python-partial-basic/</link>
					<comments>https://tech.nkhn37.net/python-partial-basic/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Fri, 25 Aug 2023 20:00:00 +0000</pubDate>
				<category><![CDATA[functools]]></category>
		<category><![CDATA[partial]]></category>
		<category><![CDATA[クロージャ]]></category>
		<category><![CDATA[部分適用]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=8813</guid>

					<description><![CDATA[Python で partial 関数を使って関数の部分適用をする方法を解説します。 partial 関数で関数の部分適用をする partial 関数は、関数と引数の値を受け取ることで関数の部分適用をすることができる関数 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Python で <span class="marker"><strong><code>partial</code> 関数を使って関数の部分適用をする方法</strong></span>を解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold"><code>partial</code> 関数で関数の部分適用をする</h2>



<p class="wp-block-paragraph"><span class="marker"><strong><code>partial</code></strong></span> 関数は、関数と引数の値を受け取ることで関数の部分適用をすることができる関数です。<code>partial</code> 関数は、<span class="marker"><strong><code>functools</code></strong></span> モジュールに含まれています。</p>



<p class="wp-block-paragraph">このように引数に関数を受け取る関数は<span class="marker"><strong>高階関数</strong></span>と言います。高階関数は、関数を操作するための強力なツールであり、関数の部分適用は、関数型プログラミング言語でも重要な概念です。</p>



<p class="wp-block-paragraph">Python はマルチパラダイムの言語と言われているため、厳密ではありませんが関数型のプログラミングスタイルもサポートしており、<code>partial</code> 関数が利用できます。</p>



<p class="wp-block-paragraph">本記事では、<span class="marker"><strong><code>partial</code> 関数を用いて関数の部分適用をする方法の基本</strong></span>を紹介します。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph"><code>partial</code> 関数と同様に関数型プログラミングに関連のある関数として <code>map</code> 関数、<code>filter</code> 関数、<code>reduce</code> 関数があります。以下ページも参考にしてください。</p>



<ul class="wp-block-list jinr-list">
<li><a href="https://tech.nkhn37.net/python-map-basic/" target="_blank" rel="noreferrer noopener">map関数の使い方の基本 ~要素への関数適用~</a></li>



<li><a href="https://tech.nkhn37.net/python-filter-basic/" target="_blank" rel="noreferrer noopener">filter関数の使い方の基本 ~条件を満たす要素を抽出~</a></li>



<li><a href="https://tech.nkhn37.net/python-reduce-basic/" target="_blank" rel="noreferrer noopener">reduce関数の使い方の基本 ~要素の畳み込み~</a></li>
</ul>
</div>
		</div></section>



<h3 class="wp-block-heading jinr-heading d--bold">関数の部分適用とは</h3>



<p class="wp-block-paragraph">関数の<span class="marker"><strong>部分適用</strong></span>は、数学やプログラミングにおいて重要な概念です。部分適用は、ある関数に対して一部の引数を固定して新しい関数を作る手続きを言います。これにより関数をより柔軟に再利用したり、複雑な操作をシンプルに表現することができます。</p>



<p class="wp-block-paragraph">例として、以下のような数学の関数を考えます。</p>



<p class="wp-block-paragraph">\begin{eqnarray}<br>f(x, y) = x^{y}<br>\end{eqnarray}</p>



<p class="wp-block-paragraph">この関数は $x$ を $y$ 乗する関数で、Python でも組み込みの関数として <code>pow(x, y)</code> として計算することができます。ここで、$y=2$ と固定して新しい関数を作ることを考え、新しい関数を $g(x)$ とおくと以下のようになります。</p>



<p class="wp-block-paragraph">\begin{eqnarray}<br>g(x) = f(x, 2) = x^{2}<br>\end{eqnarray}</p>



<p class="wp-block-paragraph">このように元の関数 $f(x, y)$ の一部の引数を固定して新しい関数 $g(x)$ を作成するのが部分適用の基本的な考え方です。</p>



<p class="wp-block-paragraph">このような部分適用を実装する際に <code>partial</code> 関数を使用できます。以降で、具体的な <code>partial</code> 関数の使い方を説明します。</p>



<h3 class="wp-block-heading jinr-heading d--bold"><code>partial</code> 関数の基本的な使い方</h3>



<p class="wp-block-paragraph"><span class="marker"><strong><code>partial</code></strong></span> 関数の基本的な構文は以下のようになります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from functools import partial

partial_func = partial(関数, 引数=値)</pre>



<p class="wp-block-paragraph"><code>partial</code> 関数は、<code>functools</code> モジュール内にあるためインポートが必要です。</p>



<p class="wp-block-paragraph"><code>partial</code> 関数は、対象の関数と固定したい引数とその値を指定します。返却値は、引数を指定した値で固定した関数であり、以降の処理で関数として使用できます。</p>



<h4 class="wp-block-heading jinr-heading d--bold">基本的な使い方</h4>



<p class="wp-block-paragraph">部分適用の説明で使用した $f(x, y) = x^{y}$ で $y$ を固定する例をつかって、<code>partial</code> 関数の使い方を見ていきましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from functools import partial

# pow(base, exp)においてexp=2に固定する
pow2 = partial(pow, exp=2)
# 4 ** 2 = 16
print(pow2(4))
# 5 ** 2 = 25
print(pow2(5))

# pow(base, exp)においてexp=3に固定する
pow3 = partial(pow, exp=3)
# 4 ** 3 = 64
print(pow3(4))
# 5 ** 3 = 125
print(pow3(5))</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
16
25
64
125</pre>



<p class="wp-block-paragraph">関数として、Python の組み込みである <code>pow(base, exp)</code> を使用しています。</p>



<p class="wp-block-paragraph"><code>partial</code> 関数の呼び出しでは「<code>pow2 = partial(pow, exp=2)</code>」というように関数 <code>pow</code> と固定する <code>exp</code> 引数の値を指定しています。ここで<span class="marker"><strong>ポイントは、関数を渡す際に <code>()</code> がない</strong></span>ことです。関数は <code>pow(4, 2)</code> のように <code>()</code> で引数を指定すると関数を実行することを意味しますが、<code>()</code> がない場合は関数そのものを表します。<code>partial</code> 関数は、受け取った <code>pow</code> を関数の内部処理で使用します。</p>



<p class="wp-block-paragraph">返却値の <code>pow2</code> は、そのものが引数<code>exp=2</code>に固定した <code>pow</code> 関数となっています。そのため、<code>pow2(4)</code> は「$4^2=16$」、<code>pow2(5)</code> は「$5^2=25$」となります。</p>



<p class="wp-block-paragraph"><code>partial</code> 関数の便利なところは 3 乗の関数を作ろうと思ったら「<code>pow3 = partial(pow, exp=3)</code>」と簡単に作れることです。この場合は、<code>pow3(4)</code> は「$4^3=64$」、<code>pow3(5)</code> は「$5^3=125$」となります。</p>



<p class="wp-block-paragraph">今回は、組み込み関数の <code>pow</code> を例にしましたが独自に作った関数でも同様のことがができます。このように <code>partial</code> 関数で、関数の部分適用を簡単に実現できます。</p>



<h4 class="wp-block-heading jinr-heading d--bold">部分適用とクロージャ</h4>



<p class="wp-block-paragraph">部分適用と似た概念として<span class="marker"><strong>クロージャ</strong></span>があります。部分適用とクロージャは、関数の振る舞いを変更するための技術としてよく聞きますが、それぞれ異なるコンセプトです。</p>



<p class="wp-block-paragraph">クロージャは、関数の外部スコープの変数を参照し、その変数の値を保持する関数のことを言います。例えば、外部の関数スコープで定義された変数を内部の関数で使用する場合は、内部関数はクロージャとして振舞うことになります。</p>



<p class="wp-block-paragraph">一方で、部分適用は関数のいくつかの引数を固定し、新しい関数を生成する手法のことを指します。この新しい関数は固定されていない引数のみ受け取って動作します。</p>



<p class="wp-block-paragraph">クロージャの場合は、以下のようなコード例となります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">def make_pow(factor):
    # my_powという内部関数は、外部関数のfactor引数を参照する
    def my_pow(x):
        return x ** factor
    return my_pow


pow2 = make_pow(2)

# 4 ** 2 = 16
print(pow2(4))
# 5 ** 2 = 25
print(pow2(5))</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
16
25</pre>



<p class="wp-block-paragraph">上記例では、<code>make_pow</code> 関数の中に内部関数として <code>my_pow</code> という関数を作成しています。この時、内部関数である <code>my_pow</code> 関数は外部関数の <code>factor</code> 引数を参照しており、<code>make_pow</code> 関数は戻り値として、<code>factor</code> を保持する <code>my_pow</code> 関数を返却します。</p>



<p class="wp-block-paragraph"><code>partial</code> を使用した部分適用と上記例で示したクロージャは同じような動作をすることが分かりますが、実装方法や背後にある概念が異なっています。</p>



<p class="wp-block-paragraph">部分適用は関数の引数の一部を固定することを主な目的とする一方で、クロージャは外部関数の変数を内部関数が参照・保持する機能を持っています。</p>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p class="wp-block-paragraph">Python で <span class="marker"><strong><code>partial</code> 関数を使って関数の部分適用をする方法</strong></span>を解説しました。</p>



<p class="wp-block-paragraph"><code>partial</code> 関数は、関数と固定する引数の値を受け取ることで関数の部分適用をすることができる関数です。<code>partial</code> 関数は、<code>functools</code> モジュールに含まれています。</p>



<p class="wp-block-paragraph">この記事では、<code>partial</code> 関数を使って関数の部分適用をする例を紹介しました。<code>partial</code> 関数は、関数をより柔軟に再利用したり、複雑な操作をシンプルに表現したりする際に非常に便利な関数のため、使い方を理解しておくようにしましょう。</p>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード</div><div class="c--simple-box-inner">
<p class="wp-block-paragraph">上記で紹介しているソースコードについては <a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-libraries/functools/partial" target="_blank" rel="noreferrer noopener">GitHub</a> にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>


<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/python-partial-basic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】reduce関数の使い方の基本 ~要素の畳み込み~</title>
		<link>https://tech.nkhn37.net/python-reduce-basic/</link>
					<comments>https://tech.nkhn37.net/python-reduce-basic/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Thu, 24 Aug 2023 21:00:00 +0000</pubDate>
				<category><![CDATA[functools]]></category>
		<category><![CDATA[reduce]]></category>
		<category><![CDATA[高階関数]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=8811</guid>

					<description><![CDATA[Python で reduce 関数を使って要素を畳み込む方法を解説します。 reduce関数で要素を畳み込む reduce 関数は、関数と処理対象のイテラブルを受け取り、そのイテラブルの要素を指定した関数を使って畳み込 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Python で <span class="marker"><strong><code>reduce</code> 関数を使って要素を畳み込む方法</strong></span>を解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold">reduce関数で要素を畳み込む</h2>



<p class="wp-block-paragraph"><span class="marker"><strong><code>reduce</code></strong></span> 関数は、関数と処理対象のイテラブルを受け取り、そのイテラブルの要素を指定した関数を使って畳み込むための関数です。</p>



<p class="wp-block-paragraph">このように引数に関数を受け取る関数は<span class="marker"><strong>高階関数</strong></span>と言います。<code>for</code> 文で処理しても同じ処理ができますが、繰り返し処理を書かずにシンプルに記載できる点がメリットです。</p>



<p class="wp-block-paragraph"><code>reduce</code> 関数は、Python 2 では <code>map</code> 関数や <code>filter</code> 関数同様に Python の組み込み関数でした。しかし、Python 3 からは <code>functools</code> モジュールに移動したため、この関数を使用する際には <code>functools</code> のインポートが必要となりました。</p>



<p class="wp-block-paragraph"><code>reduce</code> 関数は関数型プログラミング言語でも中心的な関数です。一部の言語では <code>fold</code> という関数名が使われていることもあります。Python はマルチパラダイムの言語と言われているため、厳密ではありませんが関数型のプログラミングスタイルもサポートしており、<code>reduce</code> 関数が利用できます。</p>



<p class="wp-block-paragraph">本記事では、リストを使った例を用いて、<span class="marker"><strong><code>reduce</code> 関数の使い方の基本</strong></span>を紹介します。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph"><code>reduce</code> 関数と同様に関数型プログラミングに関連のある関数として <code>map</code> 関数、<code>filter</code> 関数、<code>partial</code> 関数があります。以下ページも参考にしてください。</p>



<ul class="wp-block-list jinr-list">
<li><a href="https://tech.nkhn37.net/python-map-basic/" target="_blank" rel="noreferrer noopener">map関数の使い方の基本 ~要素への関数適用~</a></li>



<li><a href="https://tech.nkhn37.net/python-filter-basic/" target="_blank" rel="noreferrer noopener">filter関数の使い方の基本 ~条件を満たす要素を抽出~</a></li>



<li><a href="https://tech.nkhn37.net/python-partial-basic/" target="_blank" rel="noreferrer noopener">partial関数の使い方の基本 ~関数の部分適用~</a></li>
</ul>
</div>
		</div></section>



<h3 class="wp-block-heading jinr-heading d--bold"><code>reduce</code> 関数の基本的な使い方</h3>



<p class="wp-block-paragraph"><span class="marker"><strong><code>reduce</code></strong></span> 関数の基本的な構文は以下のようになります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from functools import reduce

result = reduce(関数, イテラブル)</pre>



<p class="wp-block-paragraph"><code>reduce</code> 関数は <code>functools</code> モジュール内にあるためインポートが必要です。</p>



<p class="wp-block-paragraph"><code>reduce</code> 関数は、イテラブルの要素を 1 つずつ取得し、それらの要素に累積的に指定した関数を適用して結果を畳み込んでいきます。例えば、関数 <code>func</code> とリスト <code>[a, b, c, d]</code> というものがあった時に <code>reduce(func, [a, b, c, d])</code> は、<code>func(func(func(a, b), c), d)</code> と同じです。</p>



<p class="wp-block-paragraph">よく <code>reduce</code> 関数と一緒に紹介される <code>map</code> 関数や <code>filter</code> 関数は返却値としてイテレータを返すため無限に続くシーケンスでも動作させることができます。もちろん <code>list</code> 等に変換しようとしたり、<code>for</code> でループするようなことをすれば終了しなくなります。</p>



<p class="wp-block-paragraph">一方で、<code>reduce</code> 関数は計算のためにイテラブル内の全ての要素を評価しないといけないため、無限のシーケンスでは利用することはできませんので注意しましょう。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">イテレータの基本は以下を参考にしてください。</p>



<p class="wp-block-paragraph"><a href="https://tech.nkhn37.net/python-iterator-basics/" target="_blank" rel="noreferrer noopener">イテレータ（iterator）の基本</a></p>
</div>
		</div></section>



<h4 class="wp-block-heading jinr-heading d--bold">基本的な使い方</h4>



<p class="wp-block-paragraph"><code>reduce</code> 関数の基本的な使い方を以下の例を用いて見ていきましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from functools import reduce


def add_nums(x, y):
    """値を足し算する"""
    return x + y


def multiply_nums(x, y):
    """値を掛け算する"""
    return x * y


if __name__ == "__main__":
    tmp_list = [1, 2, 3, 4, 5]

    # reduce関数でadd_nums関数を適用する
    result = reduce(add_nums, tmp_list)
    print(result)

    # reduce関数でmultiply_nums関数を適用する
    result = reduce(multiply_nums, tmp_list)
    print(result)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
15
120</pre>



<p class="wp-block-paragraph">上記の例では、受け取った値を足し算する <code>add_nums</code> 関数と掛け算をする <code>multiply_nums</code> 関数を用意し、<code>tmp_list</code> の各要素に順に関数を適用しています。</p>



<p class="wp-block-paragraph"><code>reduce</code> 関数を呼び出している部分では「<code>reduce(add_nums, tmp_list)</code>」というように関数と処理対象のリストを渡しています。ここで<span class="marker"><strong>ポイントは、関数を渡す際に <code>()</code> がない</strong></span>ことです。関数は <code>add_nums(1, 2)</code> のように <code>()</code> で引数を指定すると関数を実行することを意味しますが、<code>()</code> がない場合は関数そのものを表します。<code>reduce</code> 関数は、受け取った <code>add_nums</code> や <code>multiply_nums</code> といった関数を内部で実行しているわけです。</p>



<p class="wp-block-paragraph"><code>reduce</code> 関数で <code>add_nums</code> と <code>tmp_list</code> を実行した場合、具体的に計算している内容としては「<code>((((1+2)+3)+4)+5) = 15</code>」です。同様に <code>multiply_nums</code> の場合は、「<code>((((1*2)*3)*4)*5) = 120</code>」となります。</p>



<p class="wp-block-paragraph">このような計算を畳み込みといい <code>reduce</code> 関数を用いることで、リストの要素に順に関数を適用して計算することができます。</p>



<h4 class="wp-block-heading jinr-heading d--bold">ラムダ関数（無名関数）と組み合わせる場合</h4>



<p class="wp-block-paragraph"><code>reduce</code> 関数は、<span class="marker"><strong>ラムダ関数（無名関数）</strong></span>と組み合わせることで、より手軽に畳み込み計算をすることができます。ラムダ関数は、関数定義を <code>def</code> で定義することなく、その場で作れるもので関数型プログラミングでは中核の概念です。</p>



<p class="wp-block-paragraph"><code>add_nums</code> 関数や <code>multiply_nums</code> 関数をラムダ関数にして使う例を見てみましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from functools import reduce

tmp_list = [1, 2, 3, 4, 5]

# reduce関数でラムダ関数を使って足し算を適用する
result = reduce(lambda x, y: x + y, tmp_list)
print(result)

# reduce関数でラムダ関数を使って掛け算を適用する
result = reduce(lambda x, y: x * y, tmp_list)
print(result)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
15
120</pre>



<p class="wp-block-paragraph">これまでの例で <code>add_nums</code> 関数を指定した部分で「<code>lambda x, y: x + y</code>」というラムダ関数で置き換えて指定しています。また、同様に <code>multiply_nums</code> の代わりに「<code>lambda x, y: x * y</code>」としています。結果は <code>add_nums</code> 関数や <code>multiply_nums</code> 関数を使った場合と同じです。</p>



<p class="wp-block-paragraph">ラムダ関数は無名関数ともいわれる通り、関数名はありませんが、そのものが関数として扱われるため、<code>reduce</code> 関数に渡すことでリスト要素に対して畳み込みができます。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">ラムダ関数の基本については以下を参考にしてください。</p>



<p class="wp-block-paragraph"><a href="https://tech.nkhn37.net/python-lambda/" target="_blank" rel="noreferrer noopener">ラムダ（lambda）関数：無名関数の使い方</a></p>
</div>
		</div></section>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p class="wp-block-paragraph">Python で <span class="marker"><strong><code>reduce</code> 関数を使って要素を畳み込む方法</strong></span>を解説しました。</p>



<p class="wp-block-paragraph"><code>reduce</code> 関数は、関数と処理対象のイテラブルを受け取り、そのイテラブルの要素を指定した関数を使って畳み込むための関数です。<code>reduce</code> 関数は関数型プログラミング言語でも中心的な関数ですが Python でも使用できます。</p>



<p class="wp-block-paragraph"><code>reduce</code> 関数は、Python 3 からは <code>functools</code> モジュールに移動したため、この関数を使用する際には <code>functools</code> のインポートが必要になります。</p>



<p class="wp-block-paragraph"><code>reduce</code> 関数は <code>for</code> 文を用いなくてもシンプルに関数の畳み込みができることが特徴です。非常に強力な機能ではありますが、<code>reduce</code> 関数の適用が常に最適な選択というわけではありません。</p>



<p class="wp-block-paragraph">場合によっては <code>for</code> 文で書いた方が可読性が上がる可能性もあります。目的に応じて適切に方法を選択できるように <code>reduce</code> 関数の使い方を理解しておくようにしましょう。</p>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード</div><div class="c--simple-box-inner">
<p class="wp-block-paragraph">上記で紹介しているソースコードについては <a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-libraries/functools/reduce" target="_blank" rel="noreferrer noopener">GitHub</a> にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>


<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/python-reduce-basic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: tech.nkhn37.net @ 2026-06-14 08:23:47 by W3 Total Cache
-->