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