C#で複数のリストを連結する方法|Concatメソッドの使い方を解説
C#では、LINQのConcatメソッドを使うことで、2つ以上のList<T>を簡単に連結できます。ConcatメソッドはSystem.Linq名前空間に含まれており、複数のコレクションを順番につなげた新しいIEnumerable<T>を返します。
まず、連結対象となる3つのリストを用意します。
// 3つのリスト
var list1 = new List<int>{3, 4};
var list2 = new List<int>{1, 2, 3};
var list3 = new List<int>{2, 5, 6};
Concatメソッドでリストを連結する
次に、Concatメソッドを使ってこれらのリストを連結します。1回目の呼び出しでlist1とlist2をつなぎ、2回目の呼び出しでその結果とlist3をつなげています。
var res1 = list1.Concat(list2); var res2 = res1.Concat(list3);
なお、Concatメソッドは遅延実行されるため、foreachループなどで実際に列挙した時点で初めて連結処理が行われます。また、元のリスト自体は変更されず、連結された新しいシーケンスが返される点にも注意してください。
完全なコード例
using System.Collections.Generic;
using System.Linq;
using System;
public class Demo {
public static void Main() {
// 3つのリスト
var list1 = new List<int>{3, 4};
var list2 = new List<int>{1, 2, 3};
var list3 = new List<int>{2, 5, 6};
// リストの連結
var res1 = list1.Concat(list2);
var res2 = res1.Concat(list3);
foreach(int i in res2) {
Console.WriteLine(i);
}
}
}
出力結果
3 4 1 2 3 2 5 6
補足:メソッドチェーンでより簡潔に書く
中間変数を使わず、Concatメソッドをチェーンすれば1文でまとめることもできます。
var result = list1.Concat(list2).Concat(list3);
このようにチェーンを続けることで、4つ以上のリストでも自由に連結可能です。さらに、連結後に重複要素を除去したい場合は、Distinct()メソッドを組み合わせると便利です。
-
Pythonで配列内の複数の数値の最大公約数(GCD)を求める方法
はじめに本記事では、Pythonを使って配列(リスト)内の2つ以上の数値から最大公約数(GCD:Greatest Common Divisor)を求める方法を解説します。問題の概要数値の配列が与えられ、そのすべての要素に共通する最大公約数を求めることが目的です。3つ以上の数値のGCDは、「引数として渡されたすべての数値に共通する素因数の積」として定義できます。また、隣り合う2つの数値のGCDを繰り返し計算していくことでも求められます。ここでは、後者のアプローチである「ペアごとのGCDを順番に計算する」方法を実装します。アルゴリズムの流れまず、リストの最初の2つの要素のGCDを計算します。次に、
-
【Python】2つ以上のリストの和集合(ユニオン)を求めるプログラム
「和集合(ユニオン)」とは、複数のリストに含まれるすべての要素を集め、1つの新しいリストにまとめる操作のことです。本記事では、Pythonを使って2つ以上のリストの和集合を求める方法を、初心者にもわかりやすく解説します。 List1::[1,2,3] List2::[4,5,6] List3::[1,2,3,4,5,6] アルゴリズム ステップ1:2つのリストを入力として受け取る。 ステップ2:「+」演算子を使ってリストを連結(結合)する。 方法1:「+」演算子でリストを連結する Pythonでは「+」演算子を使うだけで、2つのリストを簡単に1つにまとめられます。以下のコードでは、まず