mori– Author –
-
Python樹林
Pythonの関数は第一級オブジェクト:変数への代入と引数としての受け渡し
Pythonにおいて、関数は「第一級オブジェクト(First-Class Object)」として扱われます。これは、関数が数値や文字列などの他のデータ型と同じように、変数に代入したり、他の関数の引数として渡したり、リストや辞書の中に格納したりできることを意味し... -
Python樹林
Pythonのグローバル変数とローカル変数:関数の外側の変数を扱う方法とglobal宣言
プログラミングにおいて、変数がどの場所から参照可能で、どこまで有効かという範囲を「スコープ」と呼びます。Pythonでは、関数の外側で定義された変数(グローバル変数/モジュール変数)を関数内部で扱う際に、少し特殊なルールが存在します。 「関数の... -
Python樹林
Python関数から複数の戻り値を返す方法:タプルの自動パックとアンパック
多くのプログラミング言語では、関数から返せる値(戻り値)は原則として1つだけです。複数の値を返したい場合、配列やオブジェクトに詰め込むなどの工夫が必要になります。 しかし、Pythonではカンマ(,)で区切るだけで、非常に簡単に複数の値を返すこと... -
Python樹林
Python関数のデフォルト引数:基本と「リストをデフォルト値にしてはいけない」理由
関数を定義する際、引数にあらかじめ値を設定しておくことで、呼び出し時にその引数を省略可能にすることができます。これを「デフォルト引数」と呼びます。 非常に便利な機能ですが、リストや辞書などの「変更可能(ミュータブル)なオブジェクト」をデフ... -
Python樹林
Python関数の引数展開:辞書をキーワード引数としてまとめて渡す方法 (**アンパック)
Pythonの関数呼び出しにおいて、辞書(dict)に格納されたデータを「キーワード引数」として関数にまとめて渡す機能があります。 これにはアスタリスクを2つ重ねた ** を使用します。リストやタプルを位置引数として展開する * と対になる機能です。 この... -
Python樹林
Python関数の引数展開:リストやタプルをまとめて渡す方法 (*アンパック)
関数に引数を渡す際、渡したいデータがすでにリストやタプルとしてまとまっている場合があります。 通常であれば、リストの要素をインデックスで一つずつ取り出して引数に指定する必要がありますが、Pythonではアスタリスク(*)を使用することで、リスト... -
Python樹林
Pythonの位置専用引数(Positional-Only Arguments):スラッシュ(/)記法の意味と使い方
Python 3.8から、関数定義の際に引数リストの中でスラッシュ / を使用できるようになりました。 これは**「位置専用引数(Positional-Only Arguments)」**を定義するための構文です。この記法を使うと、特定の引数に対して「キーワード引数としての呼び出... -
C#樹林
【C#】LINQのIntersectメソッドで2つのリストの共通要素(積集合)を抽出する
2つのデータセットを比較し、「両方に含まれているデータ」だけを取り出したい場合があります。これを数学的な用語で「積集合(Intersection)」と呼びます。 C#のLINQには、この操作を直感的に行えるIntersectメソッドが用意されています。今回は、採用シ... -
C#樹林
【C#】LINQのUnionメソッドで重複を除外してコレクションを結合する
2つのリストや配列を結合する際、単にデータを連結するのではなく「重複を取り除いて一意なリストを作りたい」というケースがあります。このような集合演算(和集合)を行うために、LINQにはUnionメソッドが用意されています。 今回は、複数のメーリングリ... -
C#樹林
【C#】LINQのToLookupメソッドで要素をキー別にグループ化・検索する
データの集合を特定の条件(キー)ごとにグループ化したい場合、LINQのToLookupメソッドを使用すると非常に便利です。 よく似た機能にGroupByがありますが、ToLookupは即時実行され、扱いやすいILookup<TKey, TElement>インターフェースを返すという... -
C#樹林
【C#】LINQのToHashSetを活用したコレクションの重複排除と集合演算
C#において、配列やリストなどのコレクションから重複を取り除いたり、特定の集合演算を行ったりする際、HashSet<T>は非常に強力なクラスです。 特に.NET Framework 4.7.2および.NET Core 2.0以降で利用可能なLINQの拡張メソッドToHashSetを使用する... -
C#樹林
【C#】LINQのToDictionaryメソッド:リストや配列をDictionaryに変換して検索を効率化する方法
リストを「検索しやすい形」に変換する C#でデータを扱う際、データベースやAPIから取得したデータは、多くの場合List<T>や配列として提供されます。これをそのまま「IDを使って特定のデータを検索」しようとすると、リストの先頭から順に探す(線形... -
C#樹林
【C#】LINQのクエリ結果を配列やListに変換する:ToArrayとToListの使い分けと即時実行
LINQの「遅延実行」と「即時実行」 C#のLINQ(Select, Whereなど)を使用する際、非常に重要な概念があります。それは、これらのメソッドが返す値は「データそのもの(結果の集合)」ではなく、「クエリ(命令の手順)」であるということです。 // この時... -
Python樹林
Python関数の可変長キーワード引数(**kwargs):任意の数のオプション引数を受け取る方法
関数を定義する際、必須の引数とは別に、任意の数の「オプション設定」や「追加属性」を受け取りたい場合があります。 前回の記事で紹介した *args は「位置引数」をタプルとして受け取るものでしたが、引数の名前(キー)と値のセットを辞書として受け取... -
Python樹林
Python関数の可変長位置引数(*args):任意の数の引数を受け取る方法
関数を定義する際、引数の数が事前に決まっていない場合があります。例えば、渡された複数の数値をすべて合計する関数や、複数のログメッセージをまとめて出力する関数などです。 Pythonでは、引数名の前にアスタリスク(*)を付けることで、任意の数(0個... -
Python樹林
Python関数の引数指定:位置引数とキーワード引数の違いと使い分け
Pythonで関数を呼び出す際、引数を渡す方法には「位置引数」と「キーワード引数」の2種類があります。 単純な関数であれば位置引数だけで十分ですが、引数の数が多い場合や、設定項目が複雑な関数の場合、キーワード引数を使うことでコードの可読性を劇的... -
Python樹林
Pythonで関数を「未実装」のままにしておく方法:pass文とNotImplementedError
開発の初期段階では、全体の設計を行うために「関数名やクラス名だけを定義しておき、中身の処理は後で実装したい」という場面が多々あります。 しかし、Pythonはインデント(字下げ)によってブロックを管理しているため、関数の中身を空のままにしておく... -
C#樹林
【C#】LINQのContainsメソッド:配列やリストに特定の要素が含まれているか判定する方法
コレクション内の要素の存在確認 C#で配列やリストを扱う際、「このリストの中に特定の値が含まれているか?」を確認したい場面は頻繁にあります。例えば、入力されたIDが許可リストにあるか、あるいは指定された数値が当たり番号に含まれているか、といっ... -
C#樹林
【C#】LINQのAnyメソッド:要素の存在確認と条件判定を効率的に行う方法
「少なくとも1つあるか」を判定する コレクションを扱う処理において、「リストが空でないか確認したい」や「エラー状態のデータが1つでも含まれているか調べたい」といった、**存在確認(Existence Check)**を行う場面は頻繁に発生します。 Count() >... -
C#樹林
【C#】LINQのAllメソッド:すべての要素が条件を満たしているか判定する方法と空リストの挙動
全要素の条件判定 配列やリストなどのコレクションデータを検証する際、「リストに含まれる数値はすべて正の数か?」や「登録されているユーザーは全員有効なステータスか?」といった、すべての要素が特定の条件を満たしているかを確認したい場面は頻繁に... -
C#樹林
【C#】LINQのAverageメソッド:配列やリストの平均値を算出する方法と空リストの注意点
データの平均値を計算する 統計データの解析や、ゲームのスコア計算、システムログのパフォーマンス分析など、データの「平均値」を求める処理はプログラミングにおいて頻出します。 C#のLINQ(Language Integrated Query)が提供するAverageメソッドを使... -
C#樹林
【C#】LINQのMinとMaxメソッド:コレクションの最小値・最大値を求める方法と計算式の活用
コレクション内の最小値・最大値の取得 データの分析や処理において、「リストの中で最も高い数値」や「最も古い日付」を取得する操作は頻繁に行われます。 C#のLINQ(Language Integrated Query)が提供するMinおよびMaxメソッドを使用すると、単純な数値... -
C#樹林
【C#】LINQのSumメソッド:配列やリストの合計値を算出する方法と応用
コレクションの集計処理 業務アプリケーションにおいて、売上の合計、テストの総得点、在庫数のカウントなど、データの「合計値」を求める処理は頻出します。 foreachループを使用して加算処理を実装することも可能ですが、C#のLINQ(Language Integrated ... -
C#樹林
【C#】LINQのCountメソッド:全要素数や条件に一致する要素数を取得する方法
コレクションの要素数を数える C#で配列やリストなどのコレクションを扱う際、そこに「データが何件あるか」を知ることは最も基本的な操作の一つです。 配列には.Lengthプロパティ、List<T>には.Countプロパティがありますが、LINQ(Language Integr... -
C#樹林
【C#】LINQのPrependとAppend:シーケンスの先頭・末尾に要素を追加する方法
コレクションへの要素追加(非破壊的アプローチ) C#で配列やリストに要素を追加する場合、List<T>.Addメソッドを使用するのが一般的です。しかし、この方法は「元のリストを直接変更する」ため、元のデータを保持したまま新しいシーケンスを作りた... -
Python樹林
Pythonの関数入門:defによる定義、引数、戻り値の基本
プログラミングにおいて、特定の処理をひとまとめにして名前を付け、何度も再利用できるようにしたものを「関数」と呼びます。Pythonには print() や len() のような組み込み関数が多数用意されていますが、自分で独自の関数を作成(定義)することも可能... -
Python樹林
Pythonの代入式(セイウチ演算子):式の中で変数代入を行う方法と活用パターン
Python 3.8から導入された**代入式(Assignment Expressions)**は、変数への代入と、その値の評価を同時に行うための機能です。 演算子の形状 := が、横を向いたセイウチ(walrus)の目と牙に見えることから、通称**「セイウチ演算子(Walrus Operator)... -
Python樹林
Pythonの構造的パターンマッチング:match-case文による高度な条件分岐とデータ抽出
Python 3.10で導入された「構造的パターンマッチング(match 文)」は、単なる値の比較だけでなく、データの構造(リスト、タプル、辞書、オブジェクトなど)に基づいて分岐を行い、同時にその中身を変数に抽出できる強力な機能です。 従来の if-elif-else... -
Python樹林
Pythonのfor-else文:ループがbreakされずに完了した場合の処理
Pythonの if 文において else が「条件に合致しなかった場合」を意味することは広く知られています。しかし、Pythonでは for 文や while 文といったループ構文に対しても else を記述できることは、意外と知られていません。 ループにおける else ブロック... -
Python樹林
Pythonループ処理の制御:continue文を使って特定の処理をスキップする方法
リストなどのデータを順に処理するループの中で、「特定の条件に当てはまるデータだけは処理せずに飛ばしたい」という場合があります。例えば、ファイル一覧から画像ファイルだけを無視したり、無効なデータを除外したりするケースです。 このような「現在...