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

【C#】2つのリストの共通要素をすべて出力するプログラムの書き方

C#では、LINQのIntersectメソッドを使うことで、2つのリストに共通する要素を簡単に抽出できます。この記事では、2つの整数型リストから共通要素を取得し、コンソールに出力するプログラムの作成手順を解説します。

1. 2つのリストを作成する

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

List<int> list1 = new List<int>() {40, 20, 60, 3, 55};
List<int> list2 = new List<int>() {20, 70, 55, 80};

2. Intersectメソッドで共通要素を取得する

共通要素を求めるには、Intersectメソッドを使用します。

list1.Intersect(list2)

Intersectは集合演算のひとつで、両方のシーケンス(リスト)に存在する要素だけを返します。重複する要素は自動的に除外され、各要素は1度だけ返される点に注意してください。また、このメソッドを使用するには、System.Linq名前空間をusingディレクティブで追加しておく必要があります。

サンプルコード(完全版)

以下が、2つのリスト間の共通要素を検索して表示する完全なコードです。

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

namespace Demo {
   class Program {
      static void Main(string[] args) {
         List<int> list1 = new List<int>() {40, 20, 60, 3, 55};
         List<int> list2 = new List<int>() {20, 70, 55, 80};
         Console.WriteLine("Common elements:");
         foreach(int value in list1.Intersect(list2))
            Console.WriteLine(value);
      }
   }
}

実行結果

Common elements:
20
55

この例では、list1とlist2の両方に含まれている「20」と「55」が出力されます。このように、Intersectメソッドを使えば、ループや条件分岐を自前で実装することなく、わずか1行で共通要素を抽出できます。コードがシンプルになり、可読性も向上するため、積極的に活用しましょう。

  1. Pythonで2つの連結リストの要素をインターリーブして1つにまとめる方法

    2つの連結リスト(リンクリスト)l1とl2が与えられたとき、l1から始めて両方のリストの要素を交互に組み合わせた(インターリーブした)1つの連結リストを返すことを考えます。どちらかのリストにノードが余った場合は、その残りのノードを結果のリストの末尾にそのまま追加します。 例えば、入力が l1 = [5,4,6,3,4,7]、l2 = [8,6,9] の場合、出力は [5,8,4,6,6,9,3,4,7] となります。 アルゴリズムの手順 この問題を解くには、以下の手順に従います。 ans := l1 と初期化する l2 が null でない限り、以下を繰り返す ans が null でない

  2. Rのリストの全要素をforループで出力する方法

    Rでは、ベクトルに対して使うforループと、リストに対して使うforループに本質的な違いはなく、通常どおりの構文でそのまま利用できます。たとえば、Listという名前のリストのすべての要素を表示したい場合は、for(i in List){print(i)}と書くだけです。ここで変数iは、ループが1周するごとにList内の各ベクトルを順番に参照します。 サンプルリストの作成 まず、さまざまな種類のベクトルを含むリストを作成します。文字ベクトル、正規分布・ポアソン分布・一様分布・指数分布に従う乱数、丸めた整数値、そして1から100までの連続数列を要素として持たせています。 List <- li