C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】2つ以上のリストから共通の値を見つける方法

C#では、LINQに用意されているIntersect()メソッドを使うことで、複数のリストに共通して含まれる値を簡単に抽出できます。この記事では、2つのリストから共通の値を求める手順を、サンプルコード付きで解説します。

手順1:複数のリストを作成する

まず、比較対象となる2つのリストを用意します。

// 2つのリスト
var list1 = new List<int>{3, 4};
var list2 = new List<int>{1, 2, 3};

手順2:Intersect()メソッドで共通の値を取得する

次に、Intersect()メソッドを呼び出すだけで、両方のリストに存在する共通の値を取得できます。

var res = list1.Intersect(list2);

完全なサンプルコード

以下は、上記の手順をまとめた完全なプログラムです。

using System.Collections.Generic;
using System.Linq;
using System;

public class Demo {
    public static void Main() {

        // 2つのリスト
        var list1 = new List<int>{3, 4};
        var list2 = new List<int>{1, 2, 3};

        // 共通の値を取得
        var res = list1.Intersect(list2);

        foreach(int i in res) {
            Console.WriteLine(i);
        }
    }
}

実行結果

3

コードの解説

Intersect()はSystem.Linq名前空間に含まれる拡張メソッドで、2つのシーケンス(リストや配列など)の積集合を計算して返します。この例では、list1(3, 4)とlist2(1, 2, 3)の両方に含まれる値は「3」だけなので、実行結果として「3」が出力されます。

また、Intersect()は重複を自動的に除外した結果を返す点にも注意してください。3つ以上のリストを比較したい場合は、取得した結果に対してさらにIntersect()を連続して呼び出すことで対応できます。

  1. 【Python入門】2つの文字列から珍しい単語(ユニークな単語)を見つけるプログラムの作り方

    はじめに この記事では、以下の問題文に対する解決方法を、実際のコード例とともにわかりやすく解説します。 問題文 2つの文字列が与えられたとき、その中から「珍しい単語」(どちらか一方の文字列にしか出現しない単語)をすべて抽出することを目標とします。両方の文字列に共通して含まれる単語は除外します。 解決のアプローチ ここでは辞書(dict)を使った出現回数のカウント方式を採用します。手順は次のとおりです。 空の辞書を用意する 各文字列をsplit()で単語ごとに分割する 各単語の出現回数を辞書に記録する 出現回数がちょうど1回の単語だけを結果として返す 実装例 # 珍しい単語を見つける関

  2. Pythonで3つ以上の文字列から最長の共通部分文字列を見つける方法【動的計画法】

    最長共通部分文字列(Longest Common Substring)を求めるアルゴリズムは、動的計画法(DP)を用いることで効率的に解けます。一般的なDP実装では、O(nm)の時間計算量で処理が可能です(n、mは比較対象となる文字列の長さ)。以下に、最長共通部分文字列アルゴリズムの実装例を示します。 実装例 def longest_common_substring(s1, s2):     m = [[0] * (1 + len(s2)) for i in range(1 + len(s1))]     lon